我有一些彼此相关的表格。
简短演示:
站点:
id | clip_id | article_id | unit_id
--------------+------------+--------
1 | 123 | 12 | 7
剪辑:
id | title | desc |
------------+--------
1 | foo2 | abc1
文章:
id | title | desc | slug
------------+---------------------
1 | foo2 | abc1 | article.html
单位:
id | vertical_id | title |
------------------+-------+
1 | 123 | abc |
垂直行业:
id | name |
-----------+
1 | vfoo |
现在我想做类似下面的事情:
SELECT ALL VERTICAL, UNIT, SITE, CLIP, ARTICLE attributes
from VERTICAL, UNIT, SITE, CLIP, ARTICLE TABLES
WHERE vertical_id = 2
有人可以帮助我如何使用joins
吗?
答案 0 :(得分:1)
以下是您可能想要的运行示例:http://sqlfiddle.com/#!15/af63b/2
select * from
sites
inner join units on sites.unit_id=units.id
inner join clips on clips.id=sites.clip_id
inner join articles on articles.id=sites.article_id
inner join verticals on verticals.id=units.vertical_id
where units.vertical_id=123
问题是,您提供给我们的描述没有明确指定要加入的列:
units
通过site
和site_id
链接指向sites
的链接units
通过unit_id
?units
通过verticals
和vertical_id
链接指向verticals
的链接units
通过unit_id
?我猜你的数据并不是一个使用连接获取行的一致例子。对于vertical_id=123
,verticals
中没有相应的条目。
修改强>
由于问题中的更正,我更正了SQL。有了这个,这两个问题就得到了回答。
答案 1 :(得分:0)
select s.id, s.clip_id, s.article_id, u.title, u.vertical_id, c.title, v.unit_id, c.desc, a.slug
from sites s
join units u on s.id = u.id
join clips c on u.id = c.id
join verticals v on c.id = v.id
join articles a on v.id = a.id
where v.vertical_id = 'any id'