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

Relacionar el mismo campo con 2 tablas

Estas en el tema de Relacionar el mismo campo con 2 tablas en el foro de Mysql en Foros del Web. Hola Amigos!!! mi problema es el siguiente en t2 tengo el campo id que contiene estos valores 1,2,3,4 entonces lo que necesito es relacionar 1,2,3 ...
  #1 (permalink)  
Antiguo 28/03/2013, 07:06
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 13 años, 6 meses
Puntos: 4
Relacionar el mismo campo con 2 tablas

Hola Amigos!!!
mi problema es el siguiente
en t2 tengo el campo id que contiene estos valores 1,2,3,4
entonces lo que necesito es relacionar 1,2,3 con t2 y 4 con t3

Código MySQL:
Ver original
  1. SELECT IFNULL(descripcion,prodma_descri) FROM T1 C
  2. LEFT JOIN  t2 A ON C.comi_artiid=A.arti_id
  3. LEFT JOIN  T3 J ON C.comi_artiid=J.prodma_artiid

cuando quiere relacionar el 4 me da que es null
entonces proble con IF y IFNULL
pero prodma_descri no lo muestra nunca
existe alguna otra forma de lograr esto
Saludos y muchas gracias!!!
  #2 (permalink)  
Antiguo 28/03/2013, 07:29
Avatar de 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

Hya algunas dudas respecto a lo que planteas:
Cita:
en t2 tengo el campo id que contiene estos valores 1,2,3,4
¿Contiene un único valor por registro, o contiene todos esos valores en un sólo registro?
Cita:
entonces lo que necesito es relacionar 1,2,3 con t2 y 4 con t3
¿T1 es tabla base, o referenciante? Es decir, la pregunta apunta saber si son T2 y T3 las que tienen una FK apuntando a T1, o es T1 la que tiene una FK apuntando a dos tablas distintas.
Quiero suponer que es el primer caso, porque en los fundamentos del modelo relacional claramente se dice que un campo que es FK no puede estar referido a las PK de más de una tabla.
Aclarame ese panorama y vemos, pero desde ya, si es el primer caso, parece que hay un error de planteo en la consulta.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 28/03/2013, 07:38
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 13 años, 6 meses
Puntos: 4
Respuesta: Relacionar el mismo campo con 2 tablas

Hola gnzsoloyo Gracias por interesarte en mi problema
el campo id de la tabla t2 contiene un unico valor por registro
el tema es que desde otro campo de la tabla t2 que se llama veri con los valores unicos por registro
0,0,0,1
entonces cuando es 0 necesito que relacione con t1 y cuando es 1 que relaciones con t3
GRACIAS
  #4 (permalink)  
Antiguo 28/03/2013, 07:55
Avatar de 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)
  #5 (permalink)  
Antiguo 28/03/2013, 08:01
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 13 años, 6 meses
Puntos: 4
Respuesta: Relacionar el mismo campo con 2 tablas

AAAHHH!!! ya entendi todo
con UNION se puede llegar a resolver igualmente ya estoy revisando todo el diseño de la bd
MUCHAS GRACIAS!!!
Saludos!!!
  #6 (permalink)  
Antiguo 28/03/2013, 08:15
Avatar de 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

__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: campo, join, relacionar, select, tablas
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 15:34.