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

[SOLUCIONADO] Duda con Relacón de tablas

Estas en el tema de Duda con Relacón de tablas en el foro de Mysql en Foros del Web. Hola, Tengo 2 tablas, tbl1 y tbl2 La cual están formadas de la siguiente forma: TBL1 id nombre apellido TBL2 id id_tbl1_rel apellido La relación ...
  #1 (permalink)  
Antiguo 12/03/2014, 06:45
Avatar de juan_14nob  
Fecha de Ingreso: abril-2010
Mensajes: 552
Antigüedad: 14 años
Puntos: 6
Duda con Relacón de tablas

Hola, Tengo 2 tablas, tbl1 y tbl2

La cual están formadas de la siguiente forma:

TBL1

id
nombre
apellido


TBL2

id
id_tbl1_rel
apellido



La relación esta hecha por 'tbl1'.'id' con 'tbl2'.'id_tbl1_rel'

Lo que yo quiero hacer es un SELECT a tbl1 pero que también me traiga los de TBL2,
el problema es que TBL2 puede tener de 1 a N registros y por ende me trae TODOS los registros repetidos y no tengo forma de diferenciarlos. Hay algo que estoy diseñando mal ?

Aguardo su ayuda, Saludos !!!
  #2 (permalink)  
Antiguo 12/03/2014, 07:07
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: Duda con Relacón de tablas

Cita:
el problema es que TBL2 puede tener de 1 a N registros y por ende me trae TODOS los registros repetidos y no tengo forma de diferenciarlos. Hay algo que estoy diseñando mal
No, no estás haciendo nada mal.
Si la relación entre la tabla 1 y la tabla 2 es 1:N, donde la T2 es de cardinalidad N, siempre se repetirá una instancia de la T1 que se relacione con la T2, por cada relación válida que exista.
Eso es el resultado esperado y normal de esa consulta.
Ahora bien, si lo que quieres es generar un reporte donde cada instancia de la T1 sólo aparezca en la primera columna de la primera línea, y sólo se diferencie en la segunda columna, eso lo haces de dos formas:
1) Por programación, en especial en paginas web. Es simple y sencillo, pero off-topic de este foro. Dependerá de qué lenguaje estés usando.
2) En MySQL, usando WITH ROLLUP en la cláusula GROUP BY sobre el campo de la T1, pero eso te traerá NULL en cada uno de los subsiguientes registros...

Código MySQL:
Ver original
  1. SELECT T1.id, T1.nombre, T1.apellido apellidoT1, T2.apellido atelllidoT2
  2. FROM TBL1 T1 INNER JOIN TBL2 ON T1.id = T2.id_tbl1_rel
  3. GROUP BY T1.id, T1.nombre, T1.apellido WITH ROLLUP
__________________
¿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 12/03/2014, 07:08
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Duda con Relacón de tablas

No se entiende lo que quieres obtener, que diferencia hay entre el campo apellido de la tabla 1 y de la tabla 2....

La FK normalmente como estas nombrando los campos deberia estar definida en la tabla2.

Si en ese caso la relacion es * a N es decir que para cada registro de la tabla 1 puede haber de 0 a N registros de la tabla 2 y para cada registro de la tabla 2 hay un registro o ninguno de la tabla 1. Si id_tbl1_rel es NOT NULL luego seria de 1 a N en el primer caso (tabla1->tabla2) y uno en el segundo (tabla2->tabla1).

Sin el significado de las tablas y de su relación no te puedo decir que haces bien o mal.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #4 (permalink)  
Antiguo 12/03/2014, 07:43
Avatar de juan_14nob  
Fecha de Ingreso: abril-2010
Mensajes: 552
Antigüedad: 14 años
Puntos: 6
Respuesta: Duda con Relacón de tablas

Hola! Muchas gracias por tu respuesta me está orientando pero no son 2 tablas, son 4 las que tengo que relacionar de la misma manera, el problema esta cuando hago los JOIN y una tabla tiene por ejemplo 8 registros y la otra tiene 3 registros..

Así es como quiero la respuesta o lo que quiero formar con mi lenguaje de programación PHP

  #5 (permalink)  
Antiguo 12/03/2014, 07:50
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: Duda con Relacón de tablas

Lo siento, pero eso no nos sirve de nada.
Lo que necesitamos saber es la estructura de las tablas, las relaciones y como debe verse el resultado en pantalla.
Lo que tu hagas en programación, ya te lo dije, es OFF TOPIC y no se trata en este foro.
En cualquier caso, ya te respondí que el comportamiento es normal, es el esperado, y si lo que quieres es mostrar un reporte con desagregaciones, para suprimir la aparicion de los items que se repinten entre registros tienes dos opciones: Lo controlas cuando vas generando la vista en pantalla, o lo haces por medio de WITH ROLLUP, controlando los NULL devueltos.
__________________
¿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: registro, select, tabla, 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 11:22.