我正在尝试在同一张桌子上应用左连接,但我没有得到所需的结果。
我有这张桌子
表格 - 页面
id name parent status
1 AAA 0 draft
2 BBB 1 live
3 CCC 13 live
4 DDD 0 live
5 EEE 4 live
6 FFF 4 live
我想要id状态为的所有行以及其父ID的状态也是实时的。在上面的例子中,id 2不应该出现,因为它的父ID 1状态是草稿。< / p>
我做了一个sqlfiddle - http://www.sqlfiddle.com/#!2/d6b31/4
非常欢迎任何帮助。提前谢谢。
答案 0 :(得分:2)
确保您的小提琴架构包含所有案例。您提供的案例不包括没有父母的孩子不在线。
这应该是您所期望的。
SELECT a.id, a.name, a.parent, a.status
FROM pages a
LEFT JOIN pages b ON a.parent = b.id and b.status='live'
WHERE a.status='live' AND (b.status='live' OR a.parent=0)
调整后的案件:
(1, 'AAA', '0', 'draft'),
(2, 'BBB', '1', 'live'),
(3, 'CCC', '13', 'live'),
(4, 'DDD', '0', 'live'),
(5, 'EEE', '4', 'live'),
(6, 'FFF', '4', 'draft'),
(7, 'GGG', '0', 'draft')