我有四张table
customers
sales
sale_items
stock_items
我想列出我所有的顾客。对于每个客户,我希望购买的总金额—我希望sql查询创建的字段(作为totalsales)
我尝试选择customers作为主表,并将其上的其他表连接起来。我试着选择sales作为主表,也选择sale\u项。我有点正确的总和计算,但它会显示我的第一个客户第一。
我的table是这样的:
* TABLE customers*
id
customer_name
email
* TABLE sales*
id
customer_id
transaction_date
* TABLE sale_items*
id
sale_id
stock_item_id
* TABLE stock_items*
id
item_name
price
我想
创建所有客户的列表,首先按销售额(价值)最大的客户排序。不是销售的数量,而是销售的总金额(销售价值)
在客户名称下显示每个客户购买的项目。这不是每个订单,而是所有的销售。因此,如果客户x购买了一罐咖啡,在每个订单数为4的情况下,这罐咖啡将显示4次。如果可能的话,我想把物品列在a-z。
我已经将每个表内部连接起来,所以我会得到一个所有事务的列表。我试过从客户中选择,从销售中选择,从销售项目中选择。我试过按客户id分组,但是我会得到不正确的计数。
我想这样显示数据。
CUSTOMER ITEMS TOTAL VALUE
John Doe Coffee
Milk
Tea
Milk
Bread
Coffee 500
Jane Doe Coffee
Milk
Coke 350
Denver Doe Coffee
Milk
Bread
Bread 125
我不想用php来查询每一个“东西”。我正在尝试运行一个或两个查询。
1条答案
按热度按时间ecfdbz9o1#
我不认为你能像你所展示的那样把它们分成不同的行(除非你仔细观察
ROLLUP
功能),但这可能不是你的要求。我想你应该用
GROUP_CONCAT
这是一个聚合函数SUM
但它会在所有值中创建一个逗号分隔的列表:您应该看到的示例行是:
(我必须编一些列名称,比如sale\u amount,但我肯定你必须有这些列名称。您必须对这些名称进行一些调整,也许还需要对我如何进行连接进行调整,但如果我了解您的需求,则应该进行一些更改。