2012-02-15 18 views
0

私は3つの異なるテーブルからデータを選択し、特定の方法でフォーマットする必要があるという問題があります。私はJOINS、UNIONS ...と様々なselect文を試しましたが、私が望むような形式を得ることはできません。SQL 3つのテーブルからデータを選択

表は、通りである:

表1(エリア表)

ID |Area 
----|----- 
1 | England 
2 | Wales 
3 | Scotland 
4 | Ireland 

表2(サイト表)

ID |AreaID |Site  
--- |--------|-----  
1 | 1  | London 
2 | 1  | Bath 
3 | 2  | Cardiff 
4 | 3  | Edinburgh 

表3(ロケーションテーブル)

ID |AreaID |TownID  | Location  
--- |---------|-----------|----- 
1 | 1  | 1   | Sussex 
2 | 1  | 1   | Mitcham 
3 | 2  | 2   | Canton 

今、私は以下を生成するために、すべての3つのテーブルからデータ:

AreaID |AreaName |SiteID  | SiteName | LocationID | LocationName  
------- |-----------|-----------|---------- -|--------------|---------- 
1  | England | 1   | London  | 1   | Sussex  
1  | England | 1   | London  | 2   | Mitcham 
2  | Wales  | 3   | Cardiff | 3   | Canton 
3  | Scotland | 3   | Edinburgh | NULL   | NULL  
4  | Ireland | NULL  | NULL  | NULL   | NULL 

だから、基本的には、場所のエントリは、サイトの実体を必要とし、サイトのエンティティは、エリアが必要です。しかし、エリアはサイトを必要とせず、サイトはロケーションを必要としません。

希望はこれが理にかなっています。

誰かが助けてくれたら、大変感謝しています。

+2

を助けます* LEFT JOINの*は?これは彼らのためのかなり簡単なアプリケーションのようです。 –

答えて

5

これは、まっすぐ進むLEFT JOINのように思える:あなたは試したことがあり

SELECT a.ID AS AreaID, a.Area AS AreaName, 
     s.ID AS SiteID, s.Site AS SiteName, 
     l.ID AS LocationID, l.Location AS LocationName 
FROM Area a 
    LEFT JOIN Site s ON s.AreaID = a.ID 
    LEFT JOIN Location l ON l.AreaID = a.ID 

希望これは

+0

どのように知っていればとてもシンプルに見えます.... – JayT

関連する問題