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

Consultar por conteo

Estas en el tema de Consultar por conteo en el foro de Mysql en Foros del Web. Hola, primero q todo gracias por este espacio. La duda es la siguiente: tengo una tabla de proveedores y una tabla de compras a provedores ...
  #1 (permalink)  
Antiguo 24/07/2012, 16:23
 
Fecha de Ingreso: marzo-2004
Mensajes: 199
Antigüedad: 20 años, 7 meses
Puntos: 1
Consultar por conteo

Hola, primero q todo gracias por este espacio.
La duda es la siguiente: tengo una tabla de proveedores y una tabla de compras a provedores asi:

TABLA PROVEEDORES
Id_proveedor | Proveedor
1 | Proveedor A
2 | Proveedor B
3 | Proveedor C

TABLA COMPRAS

Id_compra | Id_proveedor | Producto
1 3 Arroz
2 2 Platano
3 3 Yuca
4 3 Maíz
5 2 Lenteja
6 1 Frijol

Bueno, yo quiero que el mes liste los proveedores por la cantidad de productos vendidos, es decir, segun el ejempo el proveedor C, tiene 3 productos vendidos, y el proveedor B tiene solo uno asi q al hacer la consulta me deberia mostrar primero al proveedor C, luego al proveedor B y luego el A por ser quien menos ha vendido, como seria la consulta? Espero haberme hecho entender, gracias
  #2 (permalink)  
Antiguo 24/07/2012, 17:19
Avatar de 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: Consultar por conteo

Ese es un caso clásico de LEFT JOIN con un ORDER BY descedente:

Código MySQL:
Ver original
  1. SELECT P.Id_proveedor, P.Proveedor, COUNT(1) TotalCompras
  2. FROM proveedor P LEFT JOIN compras C ON P.Id_proveedor = C.Id_proveedor
  3. GROUP BY P.Id_proveedor
  4. ORDER BY TotalCompras DESC;
__________________
¿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 24/07/2012, 17:28
 
Fecha de Ingreso: marzo-2004
Mensajes: 199
Antigüedad: 20 años, 7 meses
Puntos: 1
Respuesta: Consultar por conteo

Lo probare, muchas gracias!!
  #4 (permalink)  
Antiguo 24/07/2012, 19:51
 
Fecha de Ingreso: marzo-2004
Mensajes: 199
Antigüedad: 20 años, 7 meses
Puntos: 1
Respuesta: Consultar por conteo

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in

me da ese error :s

estuve consultado, dice q puede ser por error en la conexion a la bd pero esta como las demas consultas y las demas conectan, es decir, me qdo completo asi:
$ORDCT = mysql_query("SELECT P.Id_proveedor, P.Proveedor, COUNT(1) TotalCompras
FROM proveedor P LEFT JOIN compras C ON P.Id_proveedor = C.Id_proveedor
GROUP BY P.Id_proveedor
ORDER BY TotalCompras DESC;",$conn) or die ("Error :".mysql_error());
$aqORDCT = mysql_fetch_array($qORDCT);
  #5 (permalink)  
Antiguo 24/07/2012, 19:57
Avatar de 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: Consultar por conteo

Si no te está saliendo por el "or die", entonces no hay problema con la consulta. Sería un defecto de PHP.
Eso lo deberías consultar en el foro de PHP, donde seguro que te podrán guiar mejor.
Como precaución te sugeriría que usases el phpMyadmin para ejecutar la consulta SQL sola, y verificar que esté correctamente escrita.
Simple precaución.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 24/07/2012, 20:04
 
Fecha de Ingreso: marzo-2004
Mensajes: 199
Antigüedad: 20 años, 7 meses
Puntos: 1
Respuesta: Consultar por conteo

Lo siento, el codigo funciona perfecto, copie el resto de otra consulta q tenia y funciono perfecto, muchas gracias!!
  #7 (permalink)  
Antiguo 27/07/2012, 13:12
 
Fecha de Ingreso: marzo-2004
Mensajes: 199
Antigüedad: 20 años, 7 meses
Puntos: 1
Respuesta: Consultar por conteo

Estuve haciendo el ejercicio y en la tablita de mostrar los resultados o la sumatoria de items vendidos de cada proveedor para q si el proveedor no ha registrado ninguna venta le registra 1, es decir, nadie tiene cero ventas, por q puede ser?

Gracias
  #8 (permalink)  
Antiguo 27/07/2012, 13:27
Avatar de 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: Consultar por conteo

Porque el COUNT(1) no expresa las ventas, sino que cuenta uno por cada aparición de un proveedor, y si incluyes los que no tienen compras, dará 1 para las compras cero.
Para que sólo cuente ventas deberías poner algo como:
Código MySQL:
Ver original
  1.     P.Id_proveedor,
  2.     P.Proveedor,
  3.     COUNT(C.Id_proveedor) TotalCompras
  4. FROM proveedor P LEFT JOIN compras C ON P.Id_proveedor = C.Id_proveedor
  5. GROUP BY P.Id_proveedor
  6. ORDER BY TotalCompras DESC;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 27/07/2012, 14:41
 
Fecha de Ingreso: marzo-2004
Mensajes: 199
Antigüedad: 20 años, 7 meses
Puntos: 1
Respuesta: Consultar por conteo

Ups, no habia caido en cuenta del count, muchas gracias, ahora si esa perfecto!!

Etiquetas: consultar, conteo, 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 05:13.