Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

colocar if dentro de sentencia sql

Estas en el tema de colocar if dentro de sentencia sql en el foro de Mysql en Foros del Web. Buenas tardes miren tengo el siguiente problema necesito insertar un if dentro de la consulta a la base de datos pero no me avia tocado ...
  #1 (permalink)  
Antiguo 28/07/2011, 11:21
 
Fecha de Ingreso: diciembre-2009
Ubicación: Santiago, Chile
Mensajes: 143
Antigüedad: 14 años, 4 meses
Puntos: 2
colocar if dentro de sentencia sql

Buenas tardes miren tengo el siguiente problema necesito insertar un if dentro de la consulta a la base de datos pero no me avia tocado antes realizar y no me manejo muy bien con mysql esta es la consulta.
Código MySQL:
Ver original
  1. SELECT anuncios.idAnuncio, anuncios.idCliente, anuncios.titulo, anuncios.idRegion, clientes.nombres, clientes.apellidoPaterno, clientes.apellidoMaterno, clienteinfo.esEmpresa, clienteinfo.nombreEmpresa, anuncios.fhModificacion, anuncios.fhPublicacion, regiones.nombre
  2. FROM anuncios
  3. INNER JOIN clientes ON ( anuncios.idCliente = clientes.idCliente )
  4. INNER JOIN clienteinfo ON ( clientes.idCliente = clienteinfo.idCliente )
  5. [COLOR="Red"]IF (anuncios.idRegion = 0)
  6.  
  7. INNER JOIN regiones ON ( clienteinfo.idRegion = regiones.idRegion )
  8.  
  9.  
  10. INNER JOIN regiones ON ( anuncios.idRegion = regiones.idRegion )[/COLOR]
  11.  
  12. WHERE anuncios.idEstado =3
  13. ORDER BY anuncios.fhPublicacion DESC
si alguno tiene una idea de como se hace se lo agradesco de antemano Gracias.
la idea es que si el anuncio viene sin Región me carge la Región del cliente.
  #2 (permalink)  
Antiguo 28/07/2011, 11:32
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: colocar if dentro de sentencia sql

Hola Rasec101:

Tal como planteas la consulta, creo que no es posible realizarla, a menos que trabajaras con sentencias preparadas para armar tu consulta sql y al final entonces ejecutar dicha sentencia.

También se me ocurre otra cosa, pero no sé si funcione.

Código MySQL:
Ver original
  1. SELECT anuncios.idAnuncio, anuncios.idCliente, anuncios.titulo, anuncios.idRegion, clientes.nombres, clientes.apellidoPaterno, clientes.apellidoMaterno, clienteinfo.esEmpresa, clienteinfo.nombreEmpresa, anuncios.fhModificacion, anuncios.fhPublicacion,
  2. IF (anuncios.idRegion = 0, R1.nombre, R2.nombre) nombre
  3. FROM anuncios
  4. INNER JOIN clientes ON anuncios.idCliente = clientes.idCliente
  5. INNER JOIN clienteinfo ON clientes.idCliente = clienteinfo.idCliente
  6. LEFT JOIN regiones R1 ON clienteinfo.idRegion = regiones.idRegion
  7. LEFT JOIN regiones R2 ON anuncios.idRegion = regiones.idRegion*
  8. WHERE anuncios.idEstado =3
  9. ORDER BY anuncios.fhPublicacion DESC

Si te soy honesto no sé si sirva la consulta o no... es cuestión que la pruebes para ver si va.

Saludos
Leo.
  #3 (permalink)  
Antiguo 28/07/2011, 13:44
 
Fecha de Ingreso: diciembre-2009
Ubicación: Santiago, Chile
Mensajes: 143
Antigüedad: 14 años, 4 meses
Puntos: 2
Respuesta: colocar if dentro de sentencia sql

Cita:
Iniciado por leonardo_josue Ver Mensaje
Hola Rasec101:

Tal como planteas la consulta, creo que no es posible realizarla, a menos que trabajaras con sentencias preparadas para armar tu consulta sql y al final entonces ejecutar dicha sentencia.

También se me ocurre otra cosa, pero no sé si funcione.

Código MySQL:
Ver original
  1. SELECT anuncios.idAnuncio, anuncios.idCliente, anuncios.titulo, anuncios.idRegion, clientes.nombres, clientes.apellidoPaterno, clientes.apellidoMaterno, clienteinfo.esEmpresa, clienteinfo.nombreEmpresa, anuncios.fhModificacion, anuncios.fhPublicacion,
  2. IF (anuncios.idRegion = 0, R1.nombre, R2.nombre) nombre
  3. FROM anuncios
  4. INNER JOIN clientes ON anuncios.idCliente = clientes.idCliente
  5. INNER JOIN clienteinfo ON clientes.idCliente = clienteinfo.idCliente
  6. LEFT JOIN regiones R1 ON clienteinfo.idRegion = regiones.idRegion
  7. LEFT JOIN regiones R2 ON anuncios.idRegion = regiones.idRegion*
  8. WHERE anuncios.idEstado =3
  9. ORDER BY anuncios.fhPublicacion DESC

Si te soy honesto no sé si sirva la consulta o no... es cuestión que la pruebes para ver si va.

Saludos
Leo.
Gracias por responder leonardo_josue mira copie la consulta tal cual la colocaste y me mando error #1054 - Unknown column 'regiones.idRegion' in 'on clause' voy atener que segir cabeciandome con este asunto.
  #4 (permalink)  
Antiguo 28/07/2011, 14:05
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: colocar if dentro de sentencia sql

Hola de nuevo Rasec101

El query me lo aventé al vuelo, como una idea, por eso decía que no sabría si serviría...


El error que comentas es porque puse alias para poder utilizar dos veces la misma tabla REGIONES (R1 y R2)... por lo tando los LEFT JOIN's deberían quedar más o menos así:

Código:
LEFT JOIN regiones R1 ON clienteinfo.idRegion = R1.idRegion
LEFT JOIN regiones R2 ON anuncios.idRegion = R2.idRegion
Si esto no funciona postea las sentencias de creación de tus tablas y pon algunos datos de pruebas, para poder reproducir el modelo y ver alguna otra alternativa.

Saludos
Leo.
  #5 (permalink)  
Antiguo 28/07/2011, 14:31
 
Fecha de Ingreso: diciembre-2009
Ubicación: Santiago, Chile
Mensajes: 143
Antigüedad: 14 años, 4 meses
Puntos: 2
Respuesta: colocar if dentro de sentencia sql

Cita:
Iniciado por leonardo_josue Ver Mensaje
Hola de nuevo Rasec101

El query me lo aventé al vuelo, como una idea, por eso decía que no sabría si serviría...


El error que comentas es porque puse alias para poder utilizar dos veces la misma tabla REGIONES (R1 y R2)... por lo tando los LEFT JOIN's deberían quedar más o menos así:

Código:
LEFT JOIN regiones R1 ON clienteinfo.idRegion = R1.idRegion
LEFT JOIN regiones R2 ON anuncios.idRegion = R2.idRegion
Si esto no funciona postea las sentencias de creación de tus tablas y pon algunos datos de pruebas, para poder reproducir el modelo y ver alguna otra alternativa.

Saludos
Leo.
MUCHAS GRACIAS leonardo_josue FUNCIONA PERFECTO.
  #6 (permalink)  
Antiguo 28/07/2011, 14:41
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: colocar if dentro de sentencia sql

Uff... ahora sí que como dice en mi país fue de pura chiripada (golpe de suerte o por casualidad)

No estaba seguro de que funcionara, pero me da gusto que te haya servido...

Saludos
Leo.

Etiquetas: join, select, sentencia, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:33.