Ver Mensaje Individual
  #4 (permalink)  
Antiguo 28/03/2013, 07:55
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Relacionar el mismo campo con 2 tablas

Cita:
entonces cuando es 0 necesito que relacione con t1 y cuando es 1 que relaciones con t3
Eso parece implicar que ese segundo campo es una FK apuntando a dos tablas distintas, y eso es una violacion al modelo E-R.

En cualquier caso, no existen los FROM condicionales, por lo que no se puede construir una consulta que tenga semejantes características (y creo que en realidad no se puede construir en ningún DBMS).

Lo que debemos entender es lo siguiente:

- Cada campo debe contener un único dominio (el famoso campo de existencia de un valor), por lo que si una columna es FK, debe estar apuntando a tablas que representen lo mismo, aunque los contenidos de datos varíen.

- El único caso donde dos tablas representan esencialmente la misma entidad, pero con diferentes instancias, es en una herencia.

- En el caso de las herencias debe siempre existir una entidad de jerarquía superior que actúa de "entidad padre", y es a esa entidad donde se relaciona la tabla que posee la FK.

- En ese contexto, para obtener la relación completa en la consulta se debe vincular la primera tabla con la tabla padre, y la tabla padre con cada una de las hijas... o sea, cuatro (4) tablas.

- Intentar una consulta suprimiendo la tabla padre es posible, pero en ese caso la consulta sería doble, con un UNION.

Ejemplo:
Código MySQL:
Ver original
  1. SELECT descripcion, prodma_descri
  2. FROM T1 INNER  JOIN  t2 ON T1.comi_artiid = T2.arti_id
  3. SELECT descripcion, prodma_descri
  4. FROM T1 INNER  JOIN  T3 J ON T1.comi_artiid = T2.prodma_artiid

Ahora bien, lo que quiero que te quede claro es que si esas dos tablas no son parte de una herencia, y no existe una tabla padre, el diseño que usas está completamente mal. Y de eso no quedarían dudas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)