【发布时间】:2017-07-27 09:52:38
【问题描述】:
如上所述,我希望结果是满足值的每个表中所有列的一行。所有表中的公共字段是主键。任何类型的 UNION 都不起作用,因为每个表中的列数都不相同。我使用的是 Access 数据库,因此不支持 FULL OUTER JOINS。我在 C#、Visual Studio 的应用程序中使用此查询,由于某种原因,如果没有它给我一个语法错误,我也无法进行内部连接。理想情况下,我希望在一个查询中完成此操作。
例如,假设我有表格:
表 1
userID name age
1 Bob 24
2 John 19
表2
userID col1 col2 col3
1 fd sd gh
...
Table3
userID col4 col5 col6 col7
1 ff hg fd et
...
我想要结果:
userID name age col1 col2 col3 col4 col5 col6 col7
1 Bob 24 fd sd gh ff hg fd et
也许是我最接近的:
SELECT * FROM table1 AS b
INNER JOIN table2 AS c ON c.userID = b.userID
INNER JOIN table3 AS m ON m.userID = b.userID
WHERE userID = 1;
我得到的错误:
“System.Data.OleDb.OleDbException”类型的未处理异常 发生在 System.Data.dll
附加信息:查询中的语法错误(缺少运算符) 表达式'c.userID = b.userID INNER JOIN table3 AS m ON m.userID = b.UserI'。
我应该补充一点,我希望查询具有适应性(假设我不知道列,但我知道它有用户 ID)
【问题讨论】:
-
能否请您发布您写的查询,以及您遇到的错误?
-
使用
Inner join -
我正在尝试,请参阅上面的尝试
-
这是您真正的查询还是简化查询?如果您正在简化,您能否发布您的真实查询?我怀疑你只是一个简单的语法错误
-
表/列名中的任何一个是否为 2 个单词,例如用户身份?如果是这种情况,您需要在单词周围加上方括号 [ ]。例如[用户 ID]