【发布时间】:2022-01-18 22:21:53
【问题描述】:
我有 3 个表:订单、项目和渲染。
1 个订单可以有多个项目,每个项目都有一个带有状态的渲染条目。
我想要订单 ID 和日期,其中所有项目都呈现为“完成”。
在示例中,仅订单 1,其 2 项(1 和 2)的状态在渲染表中完成
订单表
id| date
1 | 2021-12-10
2 | 2021-12-11
项目表
id|order_id
1 | 1
2 | 1
3 | 2
4 | 2
渲染表格
id|item_id| status
1 |1 | done
2 |2 | done
3 |3 | done
4 |4 | running
我希望它与 JOIN 语句一起使用。我已经尝试过了,但它不像预期的那样工作(它返回两个,订单 1 和 2):
SELECT o.id, o.date
FROM order AS o
JOIN item AS i ON o.id = i.order_id
JOIN render r1 ON (i.`id` = r1.item_id AND r1.status = 'done')
LEFT JOIN render r2 ON (i.`id` = r2.item_id AND r2.status <> 'done')
AND r2.item_id IS NULL;
有什么想法吗?提前谢谢你!
【问题讨论】: