三表连接上的选择语句出现问题
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。我认为它现在是一个开放的办公室问题以上是关于三表连接上的选择语句出现问题的主要内容,如果未能解决你的问题,请参考以下文章