谢谢大家:)我有4个表项目,点,步骤和评论;
项目 ID 名称 降序
分 ID 名称 降序 PROJECT_ID
步骤 ID 降序 points_id
评论 ID 降序 steps_id
我写了这样的查询
SELECT * FROM Project
INNER JOIN points ON points.project_id=Project.id
INNER JOIN steps ON steps.points_id=points.id
INNER JOIN comments ON comments.steps_id=steps.id
WHERE Project.id=333
一个项目有很多要点,要点,有很多步骤,并且有很多评论 这样的事情,我想在一个查询中获得所有结果,否则需要花费大量时间才能得到结果:((我不知道我能做些什么:((
就像这样
**Project**
id :1,
name :"get",
**points**
id :1,
name :"points1", ///project "get"'s point
project_id : 1,
id :2,
name :"points2", ///project "get"'s point
project_id : 1,
**steps**
id :1,
name :"steps1", ///project "points2"'s step
points_id : 2,
id :2,
name :"steps2",///project "points2"'s step
points_id : 2,
**comments**
id :1,
name :"something", ///project "steps1"'s comment
steps_id : 1,
id :2,
name :"something",///project "steps2"'s comment
steps_id : 2,
我想在一个查询中回应项目,指点,步骤和步骤的评论,或者是否有其他方法可以解决这个问题?感谢支持:)))))))
答案 0 :(得分:2)
首先,您的sql语法无效。您错过了关键字FROM
。它应该是:
SELECT *
FROM Table1
INNER JOIN table2 ON table2.table1_id= table1.id
INNER JOIN table3 ON table3.table2_id= table2.id
INNER JOIN table4 ON table4.table3_id= table3.id
WHERE table1.ID = 333
但我需要你想要的结果。您需要指定数据库架构和虚拟记录以完成查询。
答案 1 :(得分:1)
您发布的查询中缺少一些内容:
FROM
条款table2.table1_id= table1.id
......它应该是
table2.table2_id= table1.id
(除非你的桌面设计是这样的)因此,最终您的查询应该看起来像
SELECT * FROM Table1
INNER JOIN table2 ON table2.table2_id= table1.id
INNER JOIN table3 ON table3.table2_id= table1.id
INNER JOIN table4 ON table4.table4_id= table1.id
WHERE table1.ID = 333
答案 2 :(得分:0)
您当前正在通过使用值333过滤ID来检索Table1中的所有列。那么来自其他表的其他列呢?你期待什么样的调整?
答案 3 :(得分:0)
最后一次INNER JOIN中有一个拼写错误。 table2应该是table4。