有人可以验证我的查询是否产生了我希望的预期结果吗?
我正在使用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
我的目标是输出包括从销售表中购买的所有袜子(无论是否返回),并且有一个列显示是否返回了填充了日期的袜子订单,如果它是返回,如果没有退回该项,则为空白。
产品名称(即'袜子')来自产品表。
答案 0 :(得分:0)
您的问题没有描述表格的外观。我希望returns
表包含产品,所以我期待一个看起来更像这样的查询:
SELECT s.*, p.name,
(case when r.product_id is null then 0 else 1 end) as IsReturnFlag
FROM sales s JOIN
products p
ON s.product_id = p.product_id LEFT JOIN
returns r
ON s.order_id = r.order_id AND
s.product_id = r.product_id
WHERE p.name LIKE '%sock%';
答案 1 :(得分:0)
是的,您的查询看起来应该按预期工作。