使用常见的第三个在SQL中连接2个表

时间:2013-11-07 09:09:43

标签: sql join oracle11g inner-join

我有三个表,我试图返回其中两个的详细信息,但是它们没有直接链接,所以我必须使用一个共同的第三个表来加入它们。我正在使用SQL开发人员 - Oracle 11g

这是一个非常简单的表格视图:

  Country

  CID | CName
  -------------
  ENG | England
  FRA | France


  Branch

  BID | Branch Name | RegionID | CID
  ------------------------------
  B1  | ABC         | R1       | ENG
  B2  | DEF         | R1       | ENG
  B3  | GHI         | R2       | FRA

  Region

  RegionID| RegionName
  ------------------------------
  R1      | UK    
  R2      | CEurope

这只是一个非常基本的例子来说明。我希望查询返回:

  RegionID| RegionName | CID  | CName
  ------------------------------
  R1      | UK         | ENG  | England    
  R2      | CEurope    | FRA  | France

所以我想使用分支作为公共链接从Region Table和Country返回数据。

这是我目前的代码似乎不起作用:

Select
  c.CID, 
  c.CName, 
  r.RegionID, 
  r.RegionName
FROM
  Regions r inner join 
  (
  Branch b inner join Countries c on c.CID = b.BID 
  )
  on b.RegionID = r.RegionID;

3 个答案:

答案 0 :(得分:2)

SELECT
  c.CID, 
  c.CName, 
  r.RegionID, 
  r.RegionName
FROM
  Regions r 
  INNER JOIN Branch b ON b.RegionID = r.RegionID
  INNER JOIN Countries c ON c.CID = b.CID;

答案 1 :(得分:2)

这不是我们加入SQL的方式。你可以考虑看看这个简单的reference。对于您的脚本,您是否需要使用mid-table;您需要使用ON短语指定要链接的列。以下可能有效:

SELECT c.cid, 
       c.cname, 
       r.regionid, 
       r.regionname 
FROM   regions r 
       INNER JOIN branch b 
               ON b.regionid = r.regionid 
       INNER JOIN countries c 
               ON c.cid = b.cid; 

答案 2 :(得分:0)

您可能需要在国家/地区的加入中使用b.CID