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

[SOLUCIONADO] consulta sobre left join

Estas en el tema de consulta sobre left join en el foro de Mysql en Foros del Web. hola a todos, tengo una consulta tengo 3 tablas articulo(`id_articulo`,`nombre_art`,`numero_art`) revista(`id_revista`,`nombre_revista`) revista_articulos(`id_art_revist`,`id_revista`,`id _articulo`) lo que necesito es traer todos los articulo que de la tabla ...
  #1 (permalink)  
Antiguo 11/07/2013, 17:48
Avatar de leo_garay91  
Fecha de Ingreso: mayo-2012
Ubicación: argentina
Mensajes: 51
Antigüedad: 11 años, 11 meses
Puntos: 0
consulta sobre left join

hola a todos, tengo una consulta
tengo 3 tablas

articulo(`id_articulo`,`nombre_art`,`numero_art`)

revista(`id_revista`,`nombre_revista`)

revista_articulos(`id_art_revist`,`id_revista`,`id _articulo`)

lo que necesito es traer todos los articulo que de la tabla articulo que no esten en la tabla revista_articulos, para ello realizo un LEFT JOIN.

Código MySQL:
Ver original
  1. SELECT art.id_articulo,numero_art,nombre_art  FROM articulo art
  2. LEFT JOIN revista_articulos ra ON ra.id_articulo=art.id_articulo
  3. GROUP BY art.id_articulo,numero_art,nombre_art

en teoria tendria que devolverme lo que necesito, pero me tra
  #2 (permalink)  
Antiguo 11/07/2013, 18:33
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, 4 meses
Puntos: 2658
Respuesta: consulta sobre left join

La idea está bien, pero tienes que tener en cuenta cómo es la regla de funcionamiento del LEFT JOIN: Devuelve todo lo que esté a la izquierda del LEFT JOIN (la primera tabla), esté o no relacionado con lo de la derecha (segunda tabla), lo que quiere decir que la primera tabla debe ser aquella donde la segunda pueda no estar relacionada.
En definitiva: La primera no debe ser ARTICULOS, sino revista_articulos:
Código MySQL:
Ver original
  1. SELECT art.id_articulo, numero_art, nombre_art  
  2. FROM revista_articulos ra LEF JOIN articulo art ON ra.id_articulo=art.id_articulo
  3. WHERE art.id_articulo IS NULL
Y tampoco puedes agrupar por los campos de la tabla Articulo, porque precisamente estos serán NULL en el resultado...
__________________
¿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 11/07/2013, 19:41
Avatar de leo_garay91  
Fecha de Ingreso: mayo-2012
Ubicación: argentina
Mensajes: 51
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: consulta sobre left join

hola gracias por responder me sirvio.
lo unico que cambie de posicion las tablas. y el id del WHERE.
al final la consulta quedo de la siguiente manera.

Código SQL:
Ver original
  1. SELECT art.id_articulo, numero_art, nombre_art  
  2. FROM articulo art
  3. LEF JOIN revista_articulos ra   ON ra.id_articulo=art.id_articulo
  4. WHERE ra.id_articulo IS NULL

Etiquetas: join, left, select, tabla
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 23:00.