0

我有 2 张桌子。

表 1 =包含的分支

分支 ID 分支名称

表 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 |
4

2 回答 2

0

branch_id我想您必须对表 1和表 2进行外部联接,sales_branch然后循环遍历结果以生成表。我认为,通过外部加入,那些没有出售任何东西的分支机​​构将获得一个NULL

是生成您遇到问题的表格吗?我认为为这个问题做一些壮观的 SQL 是不明智的。我的两分钱。

于 2012-07-25T20:29:36.867 回答
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)
于 2012-07-25T20:24:20.537 回答