MS Access Inner Join 3 个具有相同 field_name 的表
Posted
技术标签:
【中文标题】MS Access Inner Join 3 个具有相同 field_name 的表【英文标题】:MS Access Inner Join On 3 Tables with the same field_name 【发布时间】:2014-06-10 01:53:09 【问题描述】:我正在做课堂作业,但我已经筋疲力尽了。基本上,我需要编写一个使用INNER JOIN
的查询来组合4 个表中的所有数据,同时避免标题列具有相同的名称(即Table1.Master_Number
和Table2.Master_Number
)。文字说明如下:
步骤 1: 创建 Lecture 5 数据库的所有表中所有列的视图(如果列在表中重复,则仅列出一次)。将此查询保存为 Lecture_5_View 并使用此查询来构建以下 3 个查询。在“FROM”子句中,您必须在此查询中使用“INNER JOIN”。请记住 ACCESS 不支持“CREATE VIEW”命令,因此您必须创建一个选择查询。 `
这是数据库的屏幕截图,显示了所有标题和列标题。
根据this 等其他帖子,我认为这会很简单。到目前为止我有这个,但它不想运行
(即查询表达式'Table1.Master_Number = Table2.Master_Number INNER JOIN Table4 ON Table1.Master_Number = Table4.Master_Number中的语法错误(缺少运算符))
SELECT *
FROM Table1
INNER JOIN Table2 ON Table1.Master_Number = Table2.Master_Number
INNER JOIN Table4 ON Table1.Master_Number = Table4.Master_Number
到目前为止我哪里出错了,我该如何完成这个查询?
非常感谢, 乔什
【问题讨论】:
尝试运行时遇到什么错误?does not want to run.
是什么意思?它会给你一个错误吗?
永远不要再使用 select *。非常糟糕的做法,特别是如果您有连接。另外,如果您想传递不重复列的说明,则需要列出列。
【参考方案1】:
使用 Access 时,您需要在进行多个连接时使用括号:
SELECT *
FROM (Table1
INNER JOIN Table2
ON Table1.Master_Number = Table2.Master_Number)
INNER JOIN Table4
ON Table1.Master_Number = Table4.Master_Number;
这本质上是拆分您的查询,因此每个部分最多有一个连接,即您的第一个查询是:
SELECT *
FROM Table1
INNER JOIN Table2
ON Table1.Master_Number = Table2.Master_Number;
那么你有:
SELECT *
FROM YourFirstQuery
INNER JOIN Table4
ON Table1.Master_Number = Table4.Master_Number;
这与子查询略有不同,因为您仍然可以引用 Table1 和 Table2 中的所有字段。
编辑
为避免重复列,您需要明确列出所需的列 (although you should be doing this anyway):
SELECT Table1.Master_Number,
Table1.Asset_Tag,
Table1.Serial_Number,
Table2.Last_Name,
Table2.First_Name,
Table4.Office_Number,
Table4.Location,
Table4.Department
FROM (Table1
INNER JOIN Table2
ON Table1.Master_Number = Table2.Master_Number)
INNER JOIN Table4
ON Table1.Master_Number = Table4.Master_Number;
【讨论】:
这行得通,但它给了我Table1.Master_Number
、Table2.Master_Number
和Table4.Master_Number
。我认为它应该只是一个名为 Master_Number
的列。
我认为我必须明确列出它们,但我并不完全确定。感谢您的澄清。最后,对于Table1.Asset_Tag
和Table3.Asset_Tag
,我需要另一个INNER JOIN
,对吗?
是的,您只需要在连接周围添加另一组括号。【参考方案2】:
试试这个:
SELECT * FROM ((Table1
INNER JOIN Table2
ON Table1.Master_Number = Table2.Master_Number)
INNER JOIN Table4
ON Table1.Master_Number = Table4.Master_Number)
【讨论】:
以上是关于MS Access Inner Join 3 个具有相同 field_name 的表的主要内容,如果未能解决你的问题,请参考以下文章
MS Access 多 (INNER, LEFT & RIGHT) JOIN 查询