要求是这样的:
在订单表中统计菜品订购信息 
大致显示如下几个信息:
菜名  订购数量   总价   单位
(同一种菜不同的人订购时产生多条记录, 而查询结果一种菜只显示一条记录)数据表:
 order(订单表), staff(人员), dish(菜品), dish_units(菜品单位)  
表结构:
order :
id, s_id(人员ID), d_id(菜品ID), number(订购数量)... (其它不重要)
staff:
(标记)...(其它不重要)
dish :
id, name(菜名), units(菜品单位,值在dish_units表中), price(价格), (菜品标记) ... (其它不重要)
dish_units:
id(外键_dish表中的units字段), units(单位)
注: 人员、菜品 表中有个标记 () 查找时不查找标记值为 ‘删除’ 的菜品和人员我用 GROUP BY 对菜名进行分组可得不到正确结果, 代码如下:-- 方法一
SELECT 'name'=dish.name, 'number'=sum([order].number), 'price'=sum(dish.price*[order].number), 'units'=dish_units.units 
FROM dish, staff, [order], dish_units 
WHERE dish.id = [order].d_id AND dish_units.id = dish.units AND staff.id=[order].s_id  AND ([staff].!='删除' AND dish. != '删除')
GROUP BY [order].d_id , dish.name, dish_units.units, [order].number
ORDER BY [order].number DESC
-- 方法二
SELECT     dish.name, [order].number, dish.price, dish_units.units
FROM         dish INNER JOIN
                      dish_units ON dish.units = dish_units.id INNER JOIN
                      [order] ON dish.id = [order].d_id INNER JOIN
                      staff ON [order].s_id = staff.id
WHERE     (dish. <> N'删除') AND (staff. <> N'删除')
GROUP BY dish.name, dish.price, [order].number, dish_units.units
ORDER BY [order].number DESC这样查找结果好像没进行分组 如下 :
各位大哥有什么解决方法, 共享一下, 小弟感激不尽!! 

解决方案 »

  1.   

    SELECT dish.name, 
    [number]=sum([order].number), 
    [price]=sum(dish.price), 
    dish_units.units
    FROM dish 
    INNER JOIN dish_units ON dish.units = dish_units.id 
    INNER JOIN [order] ON dish.id = [order].d_id 
    INNER JOIN staff ON [order].s_id = staff.id
    WHERE (dish. <> N'删除') AND (staff. <> N'删除')
    GROUP BY dish.name,  dish_units.units -- ,dish.price, [order].number  
    ORDER BY [order].number DESC???
      

  2.   


    不好意啊   问得有点急图片1,2两行应该合并在一起 name 一一列应该唯一
    如: 
    abc   41   4100   两
    ...
      

  3.   

    看3楼,把那个order 改了以后,对不对
      

  4.   

    改了 order后就对了,  哈哈 不知道为什么 谢谢 楼上两位