Ver Mensaje Individual
  #5 (permalink)  
Antiguo 19/12/2011, 07:21
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: Consulta de cuatro tablas... INICIACION

En base de datos, el orden de los factores, si altera el producto. Esto significa que salvo en el uso de INNER JOIN, los resultados pueden variar de acuerdo a cuál sea la primera tabla en ser leída.
Como en tu caso deberías usar LEFT JOIN esto tiene aún más imoprtancia.
Tienes que iniciar con la tabla que contenga la lista completa de todo lo que puede encontrarse, luego en la sub lista, que sólo devolverá aquellos donde existan relacioens, y así sucesivamente, de lo mayor a lo menor.

Código MySQL:
Ver original
  1.     P.title,
  2.     PS.cantidad,
  3.     PS.PVR,
  4.     PS.DTO,
  5.     PM.name,
  6.     PT.descripcion
  7.     pe_productos P
  8.     INNER JOIN pe_subproductos ON P.id_pro = producto_id
  9.     INNER JOIN pe_tipos PT ON PS.tipo_id = PT.Tid_tipo
  10.     INNER JOIN pe_marcas PM ON P.marca_id = PM.marca_id;

Esto otro devuelve todos los productos, tengan o no subproducto y marca, y los subproductos serán devueltos tengan o no tipo.
Código MySQL:
Ver original
  1.     P.title,
  2.     PS.cantidad,
  3.     PS.PVR,
  4.     PS.DTO,
  5.     PM.name,
  6.     PT.descripcion
  7.     pe_productos P
  8.     LEFT JOIN pe_subproductos ON P.id_pro = producto_id
  9.     LEFT JOIN pe_tipos PT ON PS.tipo_id = PT.Tid_tipo
  10.     LEFT JOIN pe_marcas PM ON P.marca_id = PM.marca_id;

Si ninguna de las consultas devuelve registros, tienes problemas con los datos de las 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)