0

谢谢大家 :) 我有 4 个表格项目、要点、步骤和评论;

项目 id名称描述

id 名称 desc project_id

步骤 id desc points_id

评论 id desc 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,

我想在一个查询中回显项目,它的点、点的步骤和步骤的注释,或者是否有另一种方法来解决这个问题?感谢您的支持:))))))

4

4 回答 4

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

但我需要你想要的结果。您需要指定您的数据库架构和虚拟记录来完成您的查询。

于 2012-05-28T14:12:16.897 回答
1

您发布的查询中几乎没有遗漏:

  1. 缺少FROM子句
  2. 此外,每个连接都不正确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 
于 2012-05-28T14:20:06.573 回答
0

您目前正在通过过滤值为 333 的 ID 从 Table1 中检索所有列。其他表中的其他列呢?你期待什么样的结果?

于 2012-05-28T14:11:09.080 回答
0

最后一个 INNER JOIN 有错字。表 2 应该是表 4。

于 2012-05-28T14:12:02.637 回答