希望通过逐个功能从单个查询中获取三个表中的所有数据

时间:2013-04-18 06:37:39

标签: mysql

我需要什么:我想按菜类显示销售额

我有三个表来解决这个问题:

1.order(dish_id,dish_price,dish_quantity)
2.dish(dish_id,dish_name,dish_cat_id)
3.dish_category(dish_cat_id,dis_cat_name

我想要的结果是: 我想要显示报告,已售出的数量,菜品类别以及总价格,total_quantity

预期的结果: dish_cat_id,dish_cat_name,total_price,total_quantity_sold

我的尝试:

    SELECT  d.dish_name, 
            d.dish_id,
            SUM(o.price) as total_price,
            SUM(o.dish_quantity) as total_qauntity 
    FROM order as o , dish as d
    WHERE o.dish_id = d.dish_id
    GROUP BY o.dish_id

现在我可以通过菜肴明智地获得所有菜肴及其总价格,如何获得它们 dish_category 明智

正确的是,我不知道预计会针对此查询的选定结果触发另一个查询,以便明智地将它们变为dish_category

3 个答案:

答案 0 :(得分:2)

SELECT  c.dis_cat_name , c.dish_cat_id ,
        SUM(o.price) as total_price ,
        SUM(o.dish_quantity) as total_qauntity 

FROM order as o JOIN  dish as d

       ON (o.dish_id = d.dish_id)
       join dish_category c on (d.dish_cat_id=c.dish_cat_id)

GROUP BY d.dish_cat_id

答案 1 :(得分:2)

SELECT dc.dis_cat_name, 
       SUM(o.price) as total_price, 
       SUM(o.dish_quantity) as total_quantity 
FROM order o 
    INNER JOIN dish d ON o.dish_id = d.dish_id   
    INNER JOIN  dish_category dc ON dc.dish_cat_id = d.dish_cat_id
 GROUP BY dc.dish_cat_id;

答案 2 :(得分:1)

你必须加入所有3个表:

select d2.dish_cat_id, d2.dish_cat_name, 
       sum(o1.dish_price) total_price ,sum(o1.dish_quantity) total_quantity_sold
from dish d1 join dish_category d2 on (d1.dish_cat_id= d2.dish_cat_id)
             join order o1 on (d1.dish_id = o1.dish_id)
group by d2.dish_cat_id, d2.dish_cat_name