三表连接上的选择语句出现问题

Posted

技术标签:

【中文标题】三表连接上的选择语句出现问题【英文标题】:Trouble with select statement on three table join 【发布时间】:2013-04-29 12:04:03 【问题描述】:

我正在尝试编写一个查询,该查询将从三个不同的表中返回一组列。

链接其他两个表的表称为Table_A,它包含其他两个表的键。 第二个表称为Table_B,最后一个表称为Table_C。

Table_A 列。

| a_ID(主键)| b_ID(外键)| c_ID (外键)| ..... |

Table_B 列

|b_ID(主键)| b1 | b2 | ……|

Table_C 列

| c_ID (主键) | c1 | c2 | ……|

这是我下面的 SQL 查询。 (我只关心上面的列,虽然每个表中都有更多。)

SELECT b.b_ID
     , b.b1
     , b.b2
     , a.a_ID
     , c.c1
     , c.c2 
FROM Table_A AS a 
    JOIN Table_B AS b ON a.b_ID = b.b_ID
    JOIN Table_C AS c ON a.c_ID = c.c_ID

我正在为我的项目使用开放式办公室,我遇到的错误是

"在语句 [SELECT b.b_ID 中找不到表 , b.b1 , b.b2 , a.a_ID , c.c1 , c.c2 FROM Table_A 作为 JOIN Table_B AS b ON a.b_ID = b.b_ID JOIN Table_C AS c ON a.c_ID = c.c_ID]"

出于某种原因,如果我更改 select 语句只是为了获取所有列 (*),它会返回正确的结果,但我需要将其缩小到列出的列在我的查询中。*

SELECT *
FROM Table_A AS a 
    JOIN Table_B AS b ON a.b_ID = b.b_ID
    JOIN Table_C AS c ON a.c_ID = c.c_ID'

编辑:我已经删除了实际的表名和列名,这样您就不必理解故事来帮助解决问题。

【问题讨论】:

您能发布查询的工作版本吗?以* 运行的那个? SELECT * FROM registrationTbl AS a JOIN EventTbl AS b ON a.eventID = b.eventID JOIN AttendeeTbl AS c ON a.attendeeID = c.AttendeeID WHERE b.startDate > '2013-10-01' INNER JOIN v JOIN 不会改变错误类型 三个表中的列名是否重复?如果您在没有表前缀的情况下运行查询,它仍然会出错吗? 您的 RDBMS 是开放式办公室吗?你能更具体一点吗? 【参考方案1】:

你的 WHERE 子句不应该是:

WHERE b.eventStartDate > '2013-10-01'

?

这是一个“找不同”类型的问题...

【讨论】:

抱歉打错了。我已经编辑了图表以匹配查询。谢谢。 所以它没有解决你的问题?然后你只需要三次检查所有的列名和表名是否都很好......恐怕不会有更好的答案:)。 感谢 Frikoziod .. 是的,它让我发疯:P 我 100% 确定所有列都是 char for char。我认为它现在是一个开放的办公室问题

以上是关于三表连接上的选择语句出现问题的主要内容,如果未能解决你的问题,请参考以下文章

数据库三表连接查询怎么做

mysql 三表联合查询

postgresql 下的三表连查

sql多表链接之三表连接查询

What Joins 用于将多个表连接到一个视图中

SSH中Dao三表联查如何做,除了本地Sql和HQL语句