我需要根据下面的两个表和第三个链接表创建一个查询。
Letter_DBID Letter_ID
------- -----
1 Alpha
2 Beta
3 Delta
Fruit_DBID Fruit_ID
------- -----
1 Apples
2 Oranges
3 Bananas
Linking table:
Letter_ID Fruit_ID
------- -----
Alpha Oranges
Delta Bananas
Beta Apples
Alpha Bananas
DBID是唯一的主键,但ID是非唯一的。我想基于这三个表创建一个视图,显示唯一的DBID如何与彼此相关。像这样:
Letter_DBID Fruit_DBID
------- -----
1 2
3 3
2 1
1 3
同一行中的DBID对应于链接表中的ID。
任何人都可以帮我找出一种方法来编写这个查询或指向正确的方向吗?
我正在使用MS Access 2010
谢谢!
答案 0 :(得分:0)
您需要使用两个LEFT JOINS:
SELECT Letter_DBID , Fruit_DBID FROM linking
left join table2 on table2.`Fruit_ID` = linking.`Fruit_ID`
left join table1 on table1.`Letter_ID` = linking.`Letter_ID`
答案 1 :(得分:0)
由于ID不是唯一的,您希望如何处理重叠?
例如,假设我们补充说
FRUIT_DBID:4 FRUIT_ID:苹果
你想要两个,或者只是一个出现在最终视图中?
(来自您的示例数据)
Letter_DBID Fruit_DBID
------- -----
2 1
2 4
如果你只想要一个,我认为没有办法从非唯一数据。如果两者都可以接受,我会做类似
的事情SELECT
le.Letter_DBID,
f.Fruit_DBID
FROM
(Letters le LEFT JOIN Linking li
ON le.Letter_ID = li.Letter_ID)
LEFT JOIN Fruits f
ON f.Fruit_ID=li.Fruit_ID