基于与之相关的第三个查询两个表

时间:2013-08-06 19:37:03

标签: sql ms-access

我需要根据下面的两个表和第三个链接表创建一个查询。

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

2 个答案:

答案 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`

DEMO HERE

答案 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