Sql 三表联接上的select语句有问题

Sql 三表联接上的select语句有问题,sql,hsqldb,Sql,Hsqldb,我正在尝试编写一个查询,它将从三个不同的表返回一组列 在其他两个表之间链接的表称为table_A,它包含其他两个表的键。 第二个表称为表_B,最后一个表称为表_C 表A列 |a|ID(主键)| b|ID(外键)| c|ID (外键)|| 表B列 |b|U ID(主键)| b1 | b2 || 表C列 |c|U ID(主键)| c1 | c2 || 下面是我的SQL查询。(我只关心上面的列,虽然每个表中都有更多。) 我使用OpenOffice进行我的项目,我得到的错误是 “在语句[SELECT b

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

在其他两个表之间链接的表称为table_A,它包含其他两个表的键。 第二个表称为表_B,最后一个表称为表_C

表A列

|a|ID(主键)| b|ID(外键)| c|ID (外键)||

表B列

|b|U ID(主键)| b1 | b2 ||

表C列

|c|U ID(主键)| c1 | c2 ||

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

我使用OpenOffice进行我的项目,我得到的错误是

“在语句[SELECT b.b_ID]中找不到表 ,b.b1 ,b.b2 ,a.a_ID ,c.c1 ,c.c2 从表A作为 在a.B_ID=B.B_ID上将表B连接为B 在a.C_ID=C.C_ID]上将表C作为C连接”

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


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

您的WHERE子句不应该是:

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


这是一个“发现差异”类型的问题…

你能发布查询的工作版本吗?与
*
一起运行的一个?从registrationTbl中选择*作为联接事件TBL作为b在a.eventID=b.eventID中选择b作为b在a.AttendeId=c.attendeeID中选择b作为c在a.attendeeID=c.attendeeID中选择b作为c,其中b.startDate>“2013-10-01”内部联接v联接不会更改错误类型b是否在三个表中重复列名?如果您在没有表前缀的情况下运行查询,是否仍然会出错?您的RDBMS是open office?你能说得更具体一点吗?对不起,那是个打字错误。我已经编辑了图表以匹配查询。谢谢,所以它没有解决你的问题?然后,您只需三次检查所有列和表名是否正常。。。恐怕没有更好的答案了:)。谢谢你,弗里科齐奥德。。是的,这让我发疯:P我100%确定所有的列都是逐字符的。我认为这是一个公开的办公室问题
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'
WHERE b.eventStartDate > '2013-10-01'