MS Access 查询结果 - 关系扩展
MS Access Query Results - Relationship Extension
我有 4 个 table:A、B、C 和一个链接 table。我想知道是否可以通过在 A 中设置条件从 C 检索记录,其中链接 table 中有一条记录链接 A 和 B,而链接 [=38= 中有一条单独的记录] 为 B 和 C.
这是关系的简化图:
我尝试设置一个查询,显示 A、B 和 C 的相关字段,条件在 A 中设置。链接 table 出现在查询中。 运行 仅查询 returns 来自 B 的链接记录。我应该在 C 的链接字段中的条件中添加一些内容吗? (我在查询的设计视图中这样做 - 我的知识 SQL 有限。)
.
SQL 来自访问:
SELECT Fruits.Fruit, Colour.Colour, Pests.Pest
FROM Pests RIGHT JOIN (Fruits RIGHT JOIN (Colour RIGHT JOIN [Linking Table] ON Colour.ID = [Linking Table].Colour) ON Fruits.ID = [Linking Table].Fruit) ON Pests.ID = [Linking Table].Pest
WHERE (((Pests.Pest)="Fly"));
输入:飞
输出:苹果
期望的输出:苹果和红色
链接 table 有一个将水果 ID 链接到害虫的记录,以及一个将水果 ID 链接到颜色的单独记录。
非常感谢任何帮助。
您的 linking table 用于 2 种 link。这是一种不好的做法(规范化规定 table 中的所有列都应该相关,并且列 pest 与列颜色无关)。使用一种 table 到 link 种颜色的水果,一种 link 种害虫的水果是一个更好的计划。
如果你愿意,你仍然可以使用这个,但是你必须加入链接Table两次(一次用于水果-害虫关系,一次用于水果-颜色关系)
尝试以下查询:
SELECT Fruits.Fruit, Colour.Colour, Pests.Pest
FROM Pests
INNER JOIN [Linking Table] AS LT1 ON Pests.ID = LT1.Pest
INNER JOIN Fruits ON LT1.Fruit = Fruits.ID
INNER JOIN [Linking Table] AS LT2 ON Fruits.ID = LT2.Fruit
INNER JOIN Colour ON LT2.Colour = Colour.ID
这个查询从 Pest 到 Linking table 再到 Fruits 然后到 Linking table 的第二个实例,然后到 Colour
我有 4 个 table:A、B、C 和一个链接 table。我想知道是否可以通过在 A 中设置条件从 C 检索记录,其中链接 table 中有一条记录链接 A 和 B,而链接 [=38= 中有一条单独的记录] 为 B 和 C.
这是关系的简化图:
我尝试设置一个查询,显示 A、B 和 C 的相关字段,条件在 A 中设置。链接 table 出现在查询中。 运行 仅查询 returns 来自 B 的链接记录。我应该在 C 的链接字段中的条件中添加一些内容吗? (我在查询的设计视图中这样做 - 我的知识 SQL 有限。)
SQL 来自访问:
SELECT Fruits.Fruit, Colour.Colour, Pests.Pest
FROM Pests RIGHT JOIN (Fruits RIGHT JOIN (Colour RIGHT JOIN [Linking Table] ON Colour.ID = [Linking Table].Colour) ON Fruits.ID = [Linking Table].Fruit) ON Pests.ID = [Linking Table].Pest
WHERE (((Pests.Pest)="Fly"));
输入:飞
输出:苹果
期望的输出:苹果和红色
链接 table 有一个将水果 ID 链接到害虫的记录,以及一个将水果 ID 链接到颜色的单独记录。
非常感谢任何帮助。
您的 linking table 用于 2 种 link。这是一种不好的做法(规范化规定 table 中的所有列都应该相关,并且列 pest 与列颜色无关)。使用一种 table 到 link 种颜色的水果,一种 link 种害虫的水果是一个更好的计划。
如果你愿意,你仍然可以使用这个,但是你必须加入链接Table两次(一次用于水果-害虫关系,一次用于水果-颜色关系)
尝试以下查询:
SELECT Fruits.Fruit, Colour.Colour, Pests.Pest
FROM Pests
INNER JOIN [Linking Table] AS LT1 ON Pests.ID = LT1.Pest
INNER JOIN Fruits ON LT1.Fruit = Fruits.ID
INNER JOIN [Linking Table] AS LT2 ON Fruits.ID = LT2.Fruit
INNER JOIN Colour ON LT2.Colour = Colour.ID
这个查询从 Pest 到 Linking table 再到 Fruits 然后到 Linking table 的第二个实例,然后到 Colour