Ver Mensaje Individual
  #2 (permalink)  
Antiguo 29/09/2012, 16:34
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: 17 años
Puntos: 2658
Respuesta: Como realizar consultas anidadas entre 3 tablas en una base de datos

Hay un error de diseño en tu diagrama de tablas: El detalle de venta depende de la venta y no al revés. Es decir que la PK de Venta debe ir como FK en el DetalleVenta.
Corrige eso.

Fuera de eso, estás haciendo consultas innecesariamente complicadas y no estás realizando los JOINs correctamente.
Yo propondría:
Código MySQL:
Ver original
  1.     NombreCliente,
  2.     NombreProducto
  3.     (SELECT
  4.         c.nombre NombreCliente,
  5.         p.nombre NombreProducto,
  6.         MAX(d.cantidad)
  7.     FROM
  8.         cliente c INNER JOIN ventas v ON c.codigo = v.codcliente
  9.         INNER JOIN ventadetalle d ON v.idventas = d.idventas
  10.         INNER JOIN producto d.idproducto = p.idproducto
  11.     GROUP BY c.codigo) T1;
Siempre basado en que corrijas ese error de diseño...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)