我有两个表:
exp_channel_titles
exp_relationships
我想从左表 (exp_channel_titles) 中选择不同的行,这些行在 exp_relationships 中定义了关系。我可以这样做:
SELECT DISTINCT exp_channel_titles.title
FROM exp_channel_titles
LEFT JOIN exp_relationships
ON exp_channel_titles.entry_id=exp_relationships.child_id
WHERE exp_relationships.child_id IS NOT NULL
AND exp_channel_titles.channel_id=5
AND exp_channel_titles.status='open'
问题是我想确保关系中使用的行的 exp_channel_titles.status='open' 。我发现这很难理解,所以我会尝试更好地解释。
exp_channel_titles 包含类似以下内容:
entry_id |标题 |状态 | channel_id
1 |保姆|打开| 2
2 | child 保育 |打开| 5
3 |保姆|打开| 2
4 |工商管理|打开| 5
5 |接待员 |关闭 | 2
exp_relationships 使用 exp_channel_titles.entry_id 作为 exp_relationships.parent_id 和 定义 exp_channel_titles 中的行之间的关系exp_relationships.child_id。因此上面的行将具有以下关系:
parent_id | child_id
1 | 2
3 | 2
5 | 4
所以我上面概述的查询会给我:
child 保育
工商管理
但是因为与业务管理(接待员)相关的唯一条目的状态为“已关闭”,所以我不希望此项目出现。我希望查询仅返回托儿服务。
最佳答案
您可以使用别名连接一个表两次,如下所示:
SELECT DISTINCT
ect.title
FROM
exp_channel_titles ect
JOIN
exp_relationships er
ON ect.entry_id = er.child_id
JOIN
exp_channel_titles ect2
ON ect2.entry_id = er.parent_id
WHERE
ect.channel_id = 5
AND ect.status = 'open'
AND ect2.status = 'open'
关于mysql - 使用带条件的行进行左连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34093462/