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

Consulta para 4 tablas relacionadas

Estas en el tema de Consulta para 4 tablas relacionadas en el foro de Mysql en Foros del Web. Hola, estoy un poco atascado pq mi conocimiento de mysql es limitado. La situacion es la siguiente: Relacion de mis tablas: La consulta que hago ...
  #1 (permalink)  
Antiguo 15/03/2011, 04:37
Avatar de Mysticaliptica  
Fecha de Ingreso: abril-2007
Ubicación: Guipuzcoa
Mensajes: 35
Antigüedad: 17 años
Puntos: 0
Consulta para 4 tablas relacionadas

Hola, estoy un poco atascado pq mi conocimiento de mysql es limitado.
La situacion es la siguiente:

Relacion de mis tablas:


La consulta que hago es:
Código:
SELECT  
   n.titulo,
   n.cuerpo,
   b.fch_creacion
FROM rel_blq_not bn
INNER JOIN noticias n ON bn.cod_not =  n.cod_not
INNER JOIN bloques b ON bn.cod_blq =  b.cod_blq

Todo bien pero el problema viene cuando quiero extender la consulta de esta manera:


Relacion de tablas:


Consulta que hago (MAL POR SUPUESTO) :
Código:
SELECT  
   n.titulo,
   n.cuerpo,
   b.fch_creacion,
   a.uri
FROM rel_blq_not bn
INNER JOIN noticias n ON bn.cod_not =  n.cod_not
INNER JOIN bloques b ON bn.cod_blq =  b.cod_blq
INNER JOIN archivos a ON a.cod_file = b.cod_file
Alguien me podria explicar que debo hacer para unir las 4 tablas?
La estructura de la base de datos no la puedo cambiar, por si a alguien se le ocurre que la cambie =(
Gracias
  #2 (permalink)  
Antiguo 15/03/2011, 05:29
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 3 meses
Puntos: 89
Respuesta: Consulta para 4 tablas relacionadas

Es que estas intentando unir por un campo que no existe en bloques.
  #3 (permalink)  
Antiguo 16/03/2011, 00:13
Avatar de Mysticaliptica  
Fecha de Ingreso: abril-2007
Ubicación: Guipuzcoa
Mensajes: 35
Antigüedad: 17 años
Puntos: 0
Respuesta: Consulta para 4 tablas relacionadas

¿Como deberia plantearlo entonces? ¿Alguna idea?
  #4 (permalink)  
Antiguo 16/03/2011, 02:05
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 3 meses
Puntos: 89
Respuesta: Consulta para 4 tablas relacionadas

Código SQL:
Ver original
  1. SELECT *
  2. FROM noticias n
  3. INNER JOIN rel_blq_not rbn ON
  4. n.cod_not = rbn.noticias_cod_not
  5. INNER JOIN bloques b ON
  6. rbn.bloques_cod_blq = b.cod_blq
  7. INNER JOIN archivos a ON
  8. b.archivos_cod_file = a.cod_file
  #5 (permalink)  
Antiguo 16/03/2011, 04:24
Avatar de Mysticaliptica  
Fecha de Ingreso: abril-2007
Ubicación: Guipuzcoa
Mensajes: 35
Antigüedad: 17 años
Puntos: 0
Respuesta: Consulta para 4 tablas relacionadas

Pff que tonteria no?
Aunque no me queda del todo claro pq funciona asi.
En fin, gracias por la respuesta.
  #6 (permalink)  
Antiguo 16/03/2011, 04:46
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 3 meses
Puntos: 89
Respuesta: Consulta para 4 tablas relacionadas

¿Que es lo que no te queda claro?

Tienes que poner en el ON de los JOINs los campos de las dos tablas que están relacionados.
  #7 (permalink)  
Antiguo 16/03/2011, 05:00
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 para 4 tablas relacionadas

O sea: Si un INNER JOIN se intenta entre datos incompatibles (campos no relacionados) o entre claves que no tienen valores en común, el resultado es una tabla vacía.
Si lo que quieres es que te devuelva resultados de la primera, aunque no haya resultados en la segunda, corresponde usar LEFT JOIN y no INNER JOIN.

¿Más claro?
__________________
¿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: relacionadas, 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 08:23.