我有一张顾客,订单和物品的表格。我想写一个报告,每行一个客户(对于这个例子,我假设每个客户有一个订单)以及是否订购了某些商品。
客户 :
id firstName
订单 :
id customers_id
的项 :
id orders_id
如果没有订购特定商品(例如苹果),我在显示行时遇到问题
我想要的是一个包含3列的报告:
以下是我正在使用的查询:
SELECT c.firstName, i_apple, i_banana
FROM customers
LEFT JOIN orders o ON c.id = o.customers_id
LEFT JOIN items i_apple ON o.id = i_apple.orders_id
LEFT JOIN items i_banana ON o.id = i_banana.orders_id
WHERE i_apple = 'apple' AND i_banana = 'banana'
答案 0 :(得分:0)
一切都很好,但你需要在连接的ON子句中过滤外连接,否则你将外连接变成内连接。我已将Name
列添加到Items,但它应该是ProductID
,这是带ProductName的Product表的外键。
SELECT c.firstName, i_apple.Name Apple, i_banana.Name Banana
FROM customers
LEFT JOIN orders o
ON c.id = o.customers_id
LEFT JOIN items i_apple
ON o.id = i_apple.orders_id
AND i_apple.Name = 'apple'
LEFT JOIN items i_banana
ON o.id = i_banana.orders_id
AND i_banana.Name = 'banana'