SQL查询超过5个表

时间:2014-07-14 05:24:48

标签: sql

我在模型中有四个表。这些表是:

Clients --> client_id, name
User --> user_id;user_name,client_id (FK Clients),
Products --> product_id;product_name,client_id (FK Clients)
Orders --> order_id;user_id (FK User),
OrderPos --> order_pos_id;order_id (FK Orders);quantity;product_id (FK Products)

这意味着,不同的客户拥有不同的产品,属于一个客户的每个用户都可以订购属于该客户的产品。

查询必须如何,以下列方式获得结果(每个客户端)?

User | ProduktnameX | ProduktnameXY | ProduktnameXYZ | ...
Tim  | 0            | 12            | 5
Tom  | 0            | 0             | 0
Jim  | 1            | 23            | 4

我想显示每个客户端的所有产品和每个客户端的所有用户。然后在此列表中,我想显示哪个用户订购了每个可用产品的数量(来自订单)......

1 个答案:

答案 0 :(得分:1)

SELECT c.client_id, c.name, p.product_id, p.product_name, sum(op.quantity) as product_quantity
FROM Clients AS c
JOIN User AS u ON u.client_id = c.client_id
JOIN Orders AS o ON o.user_id = u.user_id
JOIN OrderPos AS op ON op.order_id = o.order_id
JOIN Products AS p ON p.product_id = op.product_id
GROUP BY c.client_id, c.name, p.product_id, p.product_name;

然后使用报告工具(例如SSRS或其他),在列上显示矩阵/交叉表/数据透视表,按product_idproduct_name分组(显示名称),类似地行上的客户端和中间的product_quantity。