我有2张桌子。
表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 |
答案 0 :(得分:0)
您将需要sales_data中映射到分支的外键。
假设sales_branch与branch_name或branch_id不同,则sales_data应包含:
sales_id sales_date sales_branch branch_id sales_profit
此外 - 您应该发布您的代码以获取给定周的结果,我们可以帮助您在此基础上而不是给您完整的答案。
修改强> 确定修改sales_data表以使外键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)
答案 1 :(得分:0)
我猜你必须在表1的branch_id
和表2的sales_branch
上进行外连接,然后遍历结果以生成表。对于外部联接,我认为那些没有出售任何东西的分支将获得NULL
。
表格是否会产生问题?我不认为为这个问题做一些壮观的SQL是明智的。我的两分钱。