使用公共第三个表连接SQL中的两个表

使用公共第三个表连接SQL中的两个表,sql,join,oracle11g,inner-join,Sql,Join,Oracle11g,Inner Join,我有三个表,我试图返回其中两个表的详细信息,但是它们没有直接链接,所以我必须使用一个通用的第三个表来连接它们。我正在使用SQLDeveloper-Oracle11g 以下是表格的一个非常简单的视图: Country CID | CName ------------- ENG | England FRA | France Branch BID | Branch Name | RegionID | CID ---------------------------

我有三个表,我试图返回其中两个表的详细信息,但是它们没有直接链接,所以我必须使用一个通用的第三个表来连接它们。我正在使用SQLDeveloper-Oracle11g

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

  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表和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;

在加入国家/地区时,您可能需要一个b.CID。在加入国家/地区时,您可能需要一个b.CID。这不是我们加入SQL的方式。你可以考虑看看这个简单的东西。对于脚本,无论是否需要使用中间表;您需要使用短语上的
指定要链接的列。以下措施可以奏效:

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; 

这不是我们加入SQL的方式。你可以考虑看看这个简单的东西。对于脚本,无论是否需要使用中间表;您需要使用
短语上的
指定要链接的列。以下措施可以奏效:

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; 

谢谢,这真是个好办法,我不知道为什么我把它复杂化了,现在变得更有意义了。还要感谢霍克,他有同样的答案!谢谢,这真是个好办法,我不知道为什么我把它复杂化了,现在变得更有意义了。还要感谢霍克,他有同样的答案!