我在MS Access数据库中有三个表
用户, 室, room_history
room_history包含用户,房间ID。当我尝试使用room_history数据加入用户时成功检索与房间和room_history相同的内容。 这是我加入所有三个表的查询。
"SELECT users.*,rooms.room_id,rooms.room_name,rooms.type,room_history.start_date,room_history.end_date FROM users " +
"LEFT JOIN room_history ON room_history.user_id= users.user_id " +
"LEFT JOIN rooms ON room_history.room_id = rooms.room_id";
使用上述查询发生以下错误。
查询表达式中的语法错误(缺少运算符)'room_history.user_id = users.user_id在room_history.room_id = rooms.room_i上的LEFT JOIN会议室
我检查/更改我的数据库表名称,压缩数据库。
答案 0 :(得分:0)
尝试使用表别名 - 问题似乎是类型是保留的SQL关键字:
SELECT U.*,R.room_id,R.room_name,R.[type],RH.start_date,RH.end_date FROM users U
LEFT JOIN room_history RH ON RH.user_id= U.user_id
LEFT JOIN room R ON RH.room_id = R.room_id
答案 1 :(得分:0)
您的问题是您的命名惯例。
您使用了
rooms.type
其中type
是数据库的保留字。
您收到的错误
syntax error (missing operator) in query expression 'room_history.user_id = users.user_id LEFT JOIN rooms on room_history.room_id = rooms.room_i'
与下面链接讨论的命名约定有关。
如果您坚持使用您的查询"原样"你可以简单地在所有保留字的表名上加上括号([]),(例如[type], [start_date],[user_id]
)
答案 2 :(得分:0)
是否可以在此处获取基础知识 - 并使用Access查询设计视图工具设计此查询? ...而不是尝试使用基于文本的sql语句来解决这个问题......
使用查询设计功能在Access中进行查询,并在返回正确的记录集时验证它是否正确运行 - 然后使用该选项将其放入SQL视图(而不是设计视图)以便查看基于文本的sql语句。