2015-01-15 68 views
2

我有这个表:自我连接查询:如何返回子项和父行?

Content: 
- id 
- parent_id 
- slug 
- creation_date 

PARENT_ID是一个外键指向同一个表(content.id)。

我想选择表中所有行中同一个表中parent_id的子项。我想要返回父行。

现在我有两个疑问,这两个工作仅返回子行:

SELECT a.* 
FROM content a 
JOIN content b ON a.parent_id = b.id 
WHERE b.slug = 'some-slug' 
ORDER BY creation_date 

和:

SELECT content.* 
FROM content 
WHERE content.parent_id = (SELECT id FROM content WHERE slug= 'some-slug') 
ORDER BY creation_date 

我怎样才能返回子行和父行由creation_date排序?

谢谢!

+0

你是否因某种原因避免了'UNION'? – Sonny 2015-01-15 18:13:12

回答

2
select child.* 
from Content child 
join Content parent 
on  child.parent_id = parent.id 
where parent.slug = 'some-slug' 
union all 
select parent.* 
from Content parent 
where parent.slug = 'some-slug' 
order by 
     creation_date 
+1

你为什么使用子查询? – Sonny 2015-01-15 18:15:04

+1

@Sonny:好的一点,我是用'by order by',但是'order by'无论如何都适用于整个工会。更新了答案。 – Andomar 2015-01-16 13:13:49