Tsql T-SQL:是否在记录列表中显示值

Tsql T-SQL:是否在记录列表中显示值,tsql,Tsql,我有一张客户、订单和物品的表格。我想写一份报告,每行有一个客户(在这个例子中,我假设每个客户有一个订单),以及是否订购了某些物品 客户: id firstName 一切都很好,但您需要在join子句中过滤外部联接,否则将外部联接变成内部联接。我已将Name列添加到项目中,但它可能应该是ProductID,它是带有ProductName的产品表的外键 SELECT c.firstName, i_apple.Name Apple, i_banana.Name Banana FROM custom

我有一张客户、订单和物品的表格。我想写一份报告,每行有一个客户(在这个例子中,我假设每个客户有一个订单),以及是否订购了某些物品

客户

id firstName
一切都很好,但您需要在join子句中过滤外部联接,否则将外部联接变成内部联接。我已将
Name
列添加到项目中,但它可能应该是
ProductID
,它是带有ProductName的产品表的外键

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'

如果添加
sql
sqlserver版本
标记,您将获得更多关注。 id orders_id
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'
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'