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

Problemas para hacer consulta entre 3 tablas

Estas en el tema de Problemas para hacer consulta entre 3 tablas en el foro de Mysql en Foros del Web. Hola, tengo que hacer una consulta entre 3 tablas y no consigo que funcione, pido ayuda a ver si me pueden ayudar y así solventar ...
  #1 (permalink)  
Antiguo 11/05/2008, 19:47
 
Fecha de Ingreso: noviembre-2006
Mensajes: 117
Antigüedad: 17 años, 4 meses
Puntos: 0
Problemas para hacer consulta entre 3 tablas

Hola, tengo que hacer una consulta entre 3 tablas y no consigo que funcione, pido ayuda a ver si me pueden ayudar y así solventar este problemilla ya que llevo dandole vueltas todo el fin de semana y no lo consigo sacar...Vamos a ver, tengo que visualizar una tabla después de hacer una consulta, en esta tabla debería ver las ventas según el estilo de música, es decir la cantidad de discos vendidos de cada estilo que tengo en mi base de datos, las tablas que tengo son estas:

ventas: Id_Venta, Id_Cliente, Fecha, TipoCliente

detalleventa: Id_detalleventa, Id_Venta, Id_Cliente, RefNom, RefNum, Cantidad, Precioventa, Descuento

articulos: Id_articulo, RefNom, RefNum, Artista, Disco, Precio, Cantidad, Id_Caract, Id_Tamano, Id_Estilo

estilo: Id_Estilo, TipoEstilo

El problema que tengo es que no se como relacionar las tablas y que al mismo tiempo me cuente la cantidad de artículos vendidos de cada estilo ya que tengo que hacerlo con paginación y si lo hago con diferentes SELECTS no se como arreglar mi código. Además debo hacer la búsqueda entre unas fechas que me marca el usuario mediante un formulario ($Fecha1, $Fecha2), estas fechas las obtengo mediante un calendario que me las guarda con el mismo formato que en mysql...muchas grácias por adelantado.
  #2 (permalink)  
Antiguo 12/05/2008, 04:54
 
Fecha de Ingreso: abril-2008
Mensajes: 58
Antigüedad: 16 años
Puntos: 1
Re: Problemas para hacer consulta entre 3 tablas

El problema no es de la consulta, sino de las tablas, no tienes como relacionar articulos con ventas ni detalleventa.hazle un campo comun(yo pondria id_articulo en alguna de las tablas).
Despues de esto intenta tu consulta de nuevo
  #3 (permalink)  
Antiguo 12/05/2008, 06:07
 
Fecha de Ingreso: noviembre-2006
Mensajes: 117
Antigüedad: 17 años, 4 meses
Puntos: 0
Re: Problemas para hacer consulta entre 3 tablas

¿No se pueden relacionar con RefNom y RefNum? aunque ahora que lo dices si pongo Id_ariculo en vez de RefNom y RefNum queda más óptima la tabla...Gracias no lo había visto!! igualmente no se como hacer la consulta ya que es un select dentro de otro select, ¿no? ya que tengo que sacar la cantidad de cada estilo.

Yo he conseguido sacar el total de ventas de cada estilo, con el estilo:

Código PHP:
$ventas "SELECT estilo.tipoEstilo, COUNT(estilo.id_estilo) AS cantidad FROM estilo 
INNER JOIN articulos ON articulos.id_estilo = estilo.id_estilo INNER JOIN detalleventa 
ON detalleventa.refNum = articulos.refNum INNER JOIN ventas 
ON ventas.id_venta = detalleventa.id_venta WHERE ventas.fecha 
BETWEEN "
.$fecha1." AND ".$fecha2." GROUP BY estilo.id_estilo"
Pero no consigo sacar la cantidad vendida de cada uno con su estilo, sólo consigo sacar la cantidad, el problema que tengo es que los tengo en tablas diferentes:

Código PHP:
$cantidad ="SELECT SUM( detalleventa.Cantidad ) AS cant FROM detalleventa 
INNER JOIN ventas ON ventas.Id_Venta = detalleventa.Id_Venta INNER JOIN articulos 
ON articulos.RefNom = detalleventa.RefNom AND articulos.RefNum = detalleventa.RefNum
INNER JOIN estilo ON articulos.Id_Estilo = estilo.Id_Estilo 
WHERE ventas.Fecha >= '2008-01-01' AND ventas.Fecha <= '2008-05-05'
GROUP BY estilo.TipoEstilo"

Y si pongo:

Código PHP:
$cantidad ="SELECT SUM( detalleventa.Cantidad ) AS cant, estilo.TipoEstilo 
FROM detalleventa, estilo INNER JOIN ventas ON ventas.Id_Venta = detalleventa.Id_Venta 
INNER JOIN articulos ON articulos.RefNom = detalleventa.RefNom 
AND articulos.RefNum = detalleventa.RefNum AND articulos.Id_Estilo = estilo.Id_Estilo 
WHERE ventas.Fecha >= '2008-01-01' AND ventas.Fecha <= '2008-05-05'
GROUP BY estilo.TipoEstilo"

Me aparece este error: #1054 - Unknown column 'detalleventa.Id_Venta' in 'on clause'

A ver si me pueden ayudar...gracias!!!

Última edición por Kilofafeure; 12/05/2008 a las 08:54
  #4 (permalink)  
Antiguo 12/05/2008, 11:28
 
Fecha de Ingreso: noviembre-2006
Mensajes: 117
Antigüedad: 17 años, 4 meses
Puntos: 0
Re: Problemas para hacer consulta entre 3 tablas

Pues al final lo he resuelto haciendo 2 consultas diferentes:

En una 1ª obtengo el estilo y las ventas del estilo
Código PHP:
$ventas "SELECT estilo.TipoEstilo, COUNT(estilo.id_estilo) AS vent FROM estilo INNER JOIN articulos ON articulos.Id_Estilo = estilo.Id_Estilo INNER JOIN detalleventa ON detalleventa.RefNum = articulos.RefNum AND detalleventa.RefNom = articulos.RefNom INNER JOIN ventas ON ventas.Id_Venta = detalleventa.Id_Venta WHERE ventas.Fecha='$Fecha1' GROUP BY estilo.Id_Estilo"
Y en una 2ª obtengo la cantidad vendida
Código PHP:
$cantidad ="SELECT SUM( detalleventa.Cantidad ) AS cant FROM detalleventa INNER JOIN ventas ON ventas.Id_Venta = detalleventa.Id_Venta INNER JOIN articulos 
ON articulos.RefNom = detalleventa.RefNom AND articulos.RefNum = detalleventa.RefNum INNER JOIN estilo ON articulos.Id_Estilo = estilo.Id_Estilo WHERE ventas.Fecha='$Fecha1' GROUP BY estilo.TipoEstilo"

Pero sigo creyendo que se tiene que poder hacer con una sola consulta...Espero que almenos esto le sirva a alguien en un futuro...
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 01:08.