要求是这样的:
在订单表中统计菜品订购信息
大致显示如下几个信息:
菜名 订购数量 总价 单位
(同一种菜不同的人订购时产生多条记录, 而查询结果一种菜只显示一条记录)数据表:
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这样查找结果好像没进行分组 如下 :
各位大哥有什么解决方法, 共享一下, 小弟感激不尽!!
在订单表中统计菜品订购信息
大致显示如下几个信息:
菜名 订购数量 总价 单位
(同一种菜不同的人订购时产生多条记录, 而查询结果一种菜只显示一条记录)数据表:
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这样查找结果好像没进行分组 如下 :
各位大哥有什么解决方法, 共享一下, 小弟感激不尽!!
[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???
不好意啊 问得有点急图片1,2两行应该合并在一起 name 一一列应该唯一
如:
abc 41 4100 两
...