在mysql中保持连接在同一个表上

时间:2014-12-02 01:06:09

标签: mysql join

我正在尝试在同一张桌子上应用左连接,但我没有得到所需的结果。

我有这张桌子

表格 - 页面

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

非常欢迎任何帮助。提前谢谢。

1 个答案:

答案 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')