0

我有三个表,我试图从其中 2 个返回详细信息,但是它们没有直接链接,所以我必须使用一个常见的第三个表来加入它们。我正在使用 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

所以我想使用分支作为公共链接从区域表和国家/地区返回数据。

这是我当前的代码,它似乎不起作用:

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;
4

3 回答 3

3
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;
于 2013-11-07T09:18:09.250 回答
2

这不是我们在 SQL 中加入的方式。您可以考虑看看这个简单的参考。对于您的脚本,是否需要使用中间表;您需要指定要使用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; 
于 2013-11-07T09:22:30.503 回答
0

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

于 2013-11-07T09:19:46.640 回答