Código MySQL:
Ver original
el condicional seria que si el campo A.cred_proveedor2 esta vacio que el ultimo AND no se cuente.
Como se podria hacer eso?
| |||
IF en clausula WHERE Hola, hay forma de poner un condicional IF en la clausula WHERE? algo asi como que si un campo esta vacio que no ejecute algo del WHERE, pongo mi consulta:
Código MySQL:
Ver original el condicional seria que si el campo A.cred_proveedor2 esta vacio que el ultimo AND no se cuente. Como se podria hacer eso?
__________________ El aprendiz. |
| |||
Respuesta: IF en clausula WHERE Hola juandedios: No termino de entender para qué te serviría hacer lo que estás pidiendo, creo que si nos pones algunos datos de ejemplo y lo que esperas de salida podríamos proponerte alguna solución. También te hago una recomendación: utiliza INNER JOIN, LEFT JOIN o RIGTH JOIN para unir tus tablas en lugar de listarlas en el FROM, es mucho más eficiente y creo que podría servir para lo que quieres hacer.
Código MySQL:
Ver original Aunque el resultado es el mismo el performance de la consulta con INNER es mejor. Si no sabes cómo funcionan los JOIN's, preguntale a santa Wikipedia Saludos Leo. |
| |||
Respuesta: IF en clausula WHERE gracias por tu sugerencia, lo revisaré y lo implmentare, ahora para que quiero lo que pido, o quizas quiero resolverlo de una manera equivocada. Lo que sucede es que como ves en la lista de campos hay 2 que son: C.nombre y D.nombre y en el WHERE estan AND A.cred_proveedor1 = C.codigo y AND A.cred_proveedor2 = D.codigo, pero resulta que a veces el campo A.cred_proveedor2 estará vacío, entonces con lo que pongo en el WHERE solo apareceran aquellos que tengan datos en ambos campos y yo quiero que aparescan todos los registros de la consulta incluyendo los que en A.cred_proveedor2 este vacío. Espero que me haya dejado entender.
__________________ El aprendiz. |
| |||
Respuesta: IF en clausula WHERE Hola de nuevo juandedios. si entendí bien tienes algo como esto:
Código:
de tal manera que lo que tú quieres obtener sería algo como esto:Tabla EMPLEADOS codigo|Nombre -------------------- 1|UNO 2|DOS 3|TRES Tabla CREDITOS idCredito|cred_proveedor1|cred_proveedor2 ------------------------------------------------------------ 1|1|2 2|2|null 3|1|3 4|3|null idCredito|cred_proveedor1|nombre|cred_proveedor2|n ombre ------------------------------------------------------------ 1|1|UNO|2|DOS 2|2|DOS|null|null 3|1|UNO|3|TRES 4|3|TRES|null|null Si esto y en lo correcto, la consulta quedaría más o menos así:
Código:
Dale un vistazo al código, checa la parte del LEFT JOIN para que trates de entender cuál es su comportamiento y si continuas con problemas postea algunos datos de ejemplo de tus tablas y qué necesitas de salida, para ver qué alternativas puedes tener.select c.idCredito, c.cred_proveedor1,e1.nombre,c.cred_proveedor2,e2.nombre from CREDITOS c inner join EMPLEADOS e1 on c.cred_proveedor1 = e1.codigo LEFT JOIN EMPLEADOS e2 on c.creed_proveedor = e2.codigo Saludos Leo. |
| |||
Respuesta: IF en clausula WHERE muchas gracias leonardo_josue, asi quedó perfecto, voy a revisar bien esto de los INNER JOIN y compañia, gracias por todo
__________________ El aprendiz. |
Etiquetas: |