我正在尝试连接3个表,以某种方式进行分层内连接,并从第3个表中获取数据。我的出发点是文章表中的article_number(156118)。这里有工作的sql语句和表结构,但必须有一种方法将所有这些连接在一起,对吗?
// Get the parent task from the article
select task_parent
from article a, tasks t
where a.task_id = t.task_id
and a.article_number = 156118
// Get the task id for the 'Blog' task
select task_id
from tasks
where task_parent = 26093
and task_name like '%blog%'
// Get ALL the blog record
select *
from blogs
where task_id = 26091
---------Tables------------
* article table *
id | article_number | task_id
1 | 156118 | 26089
* tasks table *
id | task_name | task_parent
26089 | article | 26093
26091 | blogs | 26093
26093 | Main Task | 26093
* blog table *
id | task_id | content
1 | 102 | blah
2 | 102 | blah
3 | 102 | blah
-------------
* 如何仅使用article_number获取1个SQl语句的所有博客数据?
提前致谢!
答案 0 :(得分:4)
编辑:重读问题后修改了答案。您需要两个连接到任务表。一个用于获取文章任务的父级,另一个用于获取与文章任务相同的父级的博客任务。
select b.id, b.task_id, b.content
from article a
inner join tasks t1
on a.task_id = t1.task_id
inner join tasks t2
on t1.task_parent = t2.task_parent
and t2.task_name like '%blog%'
inner join blogs b
on t2.task_id = b.task_id
where a.article_number = 156118
答案 1 :(得分:1)
看起来你想把它们绑在一起,只需使用文章编号作为参数...... 尝试:
select b.*
from blogs b, tasks t, tasks tp, article a
where b.task_id = t.task_id
and t.task_parent = tp.task_id
and tp.task_id = a.task_id
and a.article_number = 156118
答案 2 :(得分:0)
你走了。
SELECT * FROM a
INNER JOIN tasks USING (a.article_number)
INNER JOIN blogs USING (a.article_number)
WHERE a.article_number = 156118;