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

Agrupar resultados por campo

Estas en el tema de Agrupar resultados por campo en el foro de Mysql en Foros del Web. Hola compañeros, en una consulta en la que hay pedidos y estos tiene varios productos, tengo como resultado lo siguiente: Código PHP: 3    Mediana    ternera jamon 1    Mediana    ternera maiz 1    Grande    bacon  ...
  #1 (permalink)  
Antiguo 14/04/2011, 17:11
 
Fecha de Ingreso: enero-2010
Mensajes: 389
Antigüedad: 14 años, 10 meses
Puntos: 4
Agrupar resultados por campo

Hola compañeros,

en una consulta en la que hay pedidos y estos tiene varios productos, tengo como resultado lo siguiente:
Código PHP:
3    Mediana    ternera jamon
1    Mediana    ternera maiz
1    Grande    bacon 
los campos son hora, id_pedido, tamaño e ingredientes.
Esta es mi consulta

Código PHP:
SELECT pedidos.id_pedidotamanoingrediente
FROM pedidos
pizzastamanospizzas_ingredientesingredientes
WHERE  pedidos
.id_pedido pizzas.id_pedido
AND pizzas.id_tamano tamanos.id_tamano
AND pizzas.id_pizza pizzas_ingredientes.id_pizza
AND pizzas_ingredientes.id_ingrediente ingredientes.id_ingrediente 
Como vereis se repite el id y lo que pretendo es que no se repita el id_pedido en la consulta pero si que se muestren todos las pizzas de ese pedido, lo he intentado con GROUP BY pero solo me toma un solo registro, sabeis si es posible que me imagino que si?

Sería así por ejemplo:
Código PHP:
3    Mediana    ternera jamon
1    Mediana    ternera maiz      Mediana  bacon 
Un saludo

Última edición por erxaca; 14/04/2011 a las 18:15
  #2 (permalink)  
Antiguo 14/04/2011, 20:58
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 9 meses
Puntos: 96
Respuesta: Agrupar resultados por campo

Saludos

Desde una sentencia Sql no puedes realizarlo, debes manipularlo por programacion para obtener el resultado que deseas!.
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #3 (permalink)  
Antiguo 15/04/2011, 08:13
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 10 meses
Puntos: 447
Respuesta: Agrupar resultados por campo

Hola erxaca:

Podrías utilizar la función GROUP_CONCAT() para "juntar" los detalles del pedido. sería más o menos así:

Código MySQL:
Ver original
  1. mysql> create table pedidos (id_pedido int, tamano varchar(30), ingrediente varc
  2. har(50));
  3. Query OK, 0 rows affected (0.22 sec)
  4.  
  5. mysql> insert into pedidos values (3, 'Mediana', 'ternera jamon'), (1, 'Mediana'
  6. , 'ternera maiz'), (1, 'Grande', 'bacon');
  7. Query OK, 3 rows affected (0.25 sec)
  8. Records: 3  Duplicates: 0  Warnings: 0
  9.  
  10. mysql> select * from pedidos;
  11. +-----------+---------+---------------+
  12. | id_pedido | tamano  | ingrediente   |
  13. +-----------+---------+---------------+
  14. |         3 | Mediana | ternera jamon |
  15. |         1 | Mediana | ternera maiz  |
  16. |         1 | Grande  | bacon         |
  17. +-----------+---------+---------------+
  18. 3 rows in set (0.05 sec)
  19.  
  20. mysql> select id_pedido, group_concat(concat(tamano, ' ', ingrediente)) detalle
  21.     -> from pedidos
  22.     -> group by id_pedido;
  23. +-----------+-----------------------------------+
  24. | id_pedido | detalle                           |
  25. +-----------+-----------------------------------+
  26. |         1 | Mediana ternera maiz,Grande bacon |
  27. |         3 | Mediana ternera jamon             |
  28. +-----------+-----------------------------------+
  29. 2 rows in set (0.00 sec)
  30.  
  31. mysql>

haz algunas pruebas y nos comentas.

Saludos
Leo
  #4 (permalink)  
Antiguo 15/04/2011, 08:17
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: Agrupar resultados por campo

Cita:
Como vereis se repite el id y lo que pretendo es que no se repita el id_pedido en la consulta pero si que se muestren todos las pizzas de ese pedido, lo he intentado con GROUP BY pero solo me toma un solo registro, sabeis si es posible que me imagino que si?
Si te refieres a que la consulta no te ponga el ID en cada línea consecutiva referida al mismo pedido, eso no es posible. Una consulta te devuelve una tabla, y cada valor de la tabla debe existir.
Lo que tu quieres es hacer un reporte que ya te salga terminado en la misma consulta, y eso o lo haces como te dice Nano_, por programación, o bien buscas una alternativa más rústica, con todo agrupado, pero no en forma de lista, que es lo que te propone leonardo_josue.
Te comento que normalmente lo que se hace es resolverla por programació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)
  #5 (permalink)  
Antiguo 16/04/2011, 14:22
 
Fecha de Ingreso: enero-2010
Mensajes: 389
Antigüedad: 14 años, 10 meses
Puntos: 4
Respuesta: Agrupar resultados por campo

Gracias a todos.

Buena alcaración gnzsoloyo.

leonardo_josue tu consulta es buena y he aprendido algo nuevo, casi me vale pero desgraciadamente necesito cambiar los colores de algunos de los registros y por eso no me vale

Saludos ;)

Etiquetas: agrupar, resultados, campos
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 10:06.