0

我需要基于如下所示的两个表和第三个链接表创建一个查询。

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
谢谢!

4

2 回答 2

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`

在这里演示

于 2013-08-06T19:57:25.650 回答
0

由于 ID 不是唯一的,您想如何处理重叠?例如,假设我们添加 FRUIT_DBID: 4 FRUIT_ID: Apples 您希望两者都显示,还是只显示一个显示在最终视图中?(来自您的示例数据) 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
于 2013-08-06T20:03:05.320 回答