我有两张桌子。
表1=分支,包含
branch_id branch_name
表2= sales_data包含
sales_id sales_date sales_branch sales_profit
我需要远离显示每个分支机构的总日销售额和总的日利润。我知道如何返回给定一周的结果,等等,我只是真的在努力寻找如何拉回数据。
我还需要所有的分支显示在所有的时间,如果他们没有卖出任何东西,以显示一个0。
我已经把我希望如何完成的快速图像(http://i37.photobucket.com/albums/e71/dannyflap/screen_shot.jpg)放在一起。这真的让我抓狂:
更新
select sales_branch, WEEKDAY(sales_date), COUNT(sales_profit), SUM(sales_profit)
FROM sales_date
GROUP BY sales_branch, WEEKDAY(sales_date)
这将返回以下示例。数字是编造出来的。
sales_branch, day, units, profit:
| branch1 | 0 (as day) | 16 | 439 |
| branch1 | 1 (as day) | 12 | 651 |
| branch1 | 2 (as day) | 22 | 312 |
| branch1 | 3 (as day) | 61 | 614 |
| branch1 | 4 (as day) | 12 | 541 |
| branch1 | 5 (as day) | 24 | 102 |
| branch1 | 6 (as day) | 21 | 145 |
发布于 2012-07-26 04:24:21
在sales_data中,您将需要一个映射到分支的外键。
假设sales_branch不同于branch_name或branch_id,sales_data应该包含:
sales_id sales_date sales_branch branch_id sales_profit
此外-你应该发布你的代码,以获得给定周的结果,我们可以帮助你在此基础上构建,而不是给你完整的答案。
EDIT Ok修改您的sales_data表,使其具有指向branch表的外键branch_id,此查询将使您更接近您正在寻找的内容。
SELECT b.branch_name, WEEKDAY(s.sales_date), COUNT(s.sales_profit), SUM(s.sales_profit)
FROM branch b
LEFT OUTER JOIN sales_data on s.branch_id = b.branch_id
GROUP BY b.branch_id, WEEKDAY(s.sales_date)
发布于 2012-07-26 04:29:37
我猜您必须对表1的branch_id
和表2的sales_branch
进行外连接,并遍历结果以生成表。通过使用外部连接,我认为那些没有销售任何东西的分支机构将获得一个NULL
。
是不是表生成有问题?我不认为为这个问题做一些壮观的SQL是明智的。我的两点意见。
https://stackoverflow.com/questions/11657933
复制相似问题