【发布时间】:2016-04-09 19:41:25
【问题描述】:
有人可以验证我的查询是否产生了我希望的预期结果吗?
我正在使用 PostgreSQL。
SELECT sold_at
, quantity
, returned_at
, name
, price
FROM sales
LEFT JOIN returns
ON sales.order_id=returns.order_id
JOIN products
ON sales.product_id=products.product_id
WHERE name LIKE '%sock%'
ORDER by sold_at ASC
sold_at | quantity | returned_at | name | price
2015-06-01 | 8 | |socks-toeless | 15
2015-06-01 | 7 | 2015-06-08| socks-flat | 15
我的目标是输出包括从销售表购买的所有袜子(无论是否退回),并有一列显示袜子订单是否已退回,如果是,则填充日期已退回,如果该项目未退回,则为空白。
产品名称(即“袜子”)来自产品表。
【问题讨论】:
-
您使用的是什么数据库?您可能只需将“LEFT JOIN”更改为“LEFT OUTER JOIN”。
-
我正在使用 PostgreSQL
-
那么 OUTER 是隐含的,所以我猜你的查询没问题。它没有像您期望的那样工作吗?
-
您的查询似乎没问题...
-
样本数据以及期望的结果会有所帮助。您的查询不太可能产生您想要的结果。
标签: sql postgresql join left-join inner-join