Agrupar por y unir en MySQL.
Quiero obtener el total de la tabla “barpurchaserequest” agrupado por tipo de menú como “comida” y “bebida”. He intentado con la siguiente consulta:
SELECT DISTINCT(b.name),
0 as food_total,
0 as drink_total,
sum(ph.total) as total,
sum(ph.gratuity) as gratuity
from branches b
LEFT JOIN drink_requests dr ON b.id = dr.branch_id
JOIN drink_food df ON df.id = dr.drink_id
JOIN bar_purchase_history ph ON ph.request_id = dr.id
GROUP BY dr.branch_id;
Puedes verificar mi estructura de tabla como se muestra a continuación:
Estructura de la tabla ‘request’:
Estructura de la tabla de elementos del menú:
Quiero que mi resultado sea como se muestra a continuación:
Si alguien puede ayudar, por favor.
davy.ai
Para obtener el total de la tabla bar_purchase_request agrupado por el tipo de menú “comida” y “bebida”, debe modificar su consulta de la siguiente manera:
Explicación:
CASE
dentro de la funciónSUM
para calcular el total de cada tipo de menú por separado.COALESCE
para reemplazar los valores nulos por ceros.drink_requests
, y también eliminando la palabra claveDISTINCT
.El resultado debería ser lo que está buscando: