Ver Mensaje Individual
  #2 (permalink)  
Antiguo 14/06/2012, 09:18
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 10 meses
Puntos: 447
Respuesta: Un if adentro de un left join

Hola dattar:

No me queda claro cómo tienes organizada tu información. Desde mi punto de vista tienes un problema grave de modelado de datos. No puedes tener una llave foránea que pueda hacer referencia a más de una tabla... En tu caso podrías modelar tus tablas con dos enfoques distintos, una sería colocando tres campos en tu tabla leyes_relacion donde cada campo haga referencia a una tabla (jurisprudencia, leyes, doctrinas) o convertir estas tres tablas en una sola, incluyendo un atributo TIPO donde especifiques si es justamente jurisprudencia, ley o doctrina.

Si te es posible, modifica tu modelo de BD y evitarás más problemas como este en el futuro. Sin embargo como es posible que no puedas modificar tu modelo de BD se me ocurren dos ideas, aunque no sé si funcionen...

Una sería hacer lo siguiente:

Código MySQL:
Ver original
  1. SELECT * FROM leyes_relacion
  2.   LEFT JOIN jurisprudencia
  3.     ON jurisprudencia_id = tipo_relacion AND tipo_relacion = 1
  4.   LEFT JOIN doctrina
  5.     ON doctrina _id = tipo_relacion AND tipo_relacion = 2
  6.   LEFT JOIN leyes
  7.     ON leyes _id = tipo_relacion AND tipo_relacion = 3
  8. WHERE ley_id = 1255

o
Código MySQL:
Ver original
  1. SELECT * FROM leyes_relacion
  2.   LEFT JOIN jurisprudencia
  3.   ON jurisprudencia_id = tipo_relacion
  4.   WHERE ley_id = 1255 AND tipo_relacion = 1
  5. SELECT * FROM leyes_relacion
  6.   LEFT JOIN doctrina  
  7.   ON doctrina _id = tipo_relacion
  8.   WHERE ley_id = 1255 AND tipo_relacion = 2
  9. SELECT * FROM leyes_relacion
  10.   LEFT JOIN leyes
  11.   ON leyes _id = tipo_relacion
  12.   WHERE ley_id = 1255 AND tipo_relacion = 3

Prueba alguna de las dos opciones a ver si te regresa el resultado que estás esperando, sino es así sería conveniente que nos pongas algunos datos de ejemplo de cada una de tus tablas para hacerte una nueva propuesta.

Saludos
Leo.