2015-05-09 34 views
-3

需要與獲得來自多個表中的數據相同外鍵

  • 表1 InjID(PK)和Name
  • 表2 Tid(RefK)是指InjId(表1)和Name
  • 表3 ID(RefK)指的是InjID(表1)和Name

有表2和表之間沒有聯繫3.

我有這樣的數據:

表1

________________ 
InjID  Name 
---------------- 
1   xxxx 
2   bbbb 
3   cccc 
4   yyyy 

表2

-------------- 
TID  Name 
-------------- 
1  A3434 
1  R5678 
2  G6789 

和表3

------------- 
ID  Name 
------------- 
2  89T 
2  78P 
3  66J 

我想要的結果是這樣的:

-------------------------- 
injid Table1-name Table2-name table3-name 
-------------------------------------------- 
1   xxxx  A3434  null 
1   xxxx  R5678  null 
2   bbbb  G6789  89T 
2   bbbb  null   78P 
3   cccc  null   66J 
4   yyyy  null   null 
+1

它是什麼類型的SQL?即Oracle? SQL Server?您通常可以使用其中一個GUI創建一個視圖,然後從中找出它。 –

+0

其Sql服務器,我想要一個正常的SQL查詢來生成Microstrategy中的報告 – Ammu

+0

應該足以做'Table_1左外部連接表Table_2上Table_1.Name = Table_2.Name左外部連接...' –

回答

2

我猜你只是想要一個OUTER JOIN

select t1.injid, t1.name, t2.name, t3.name 
from table1 t1 
    left join table2 t2 on t1.InjID = t2.tid 
    left join table3 t3 on t1.InjID = t3.id 

執行,如:

SQL>select * from table1; 
     InjID name 
=========== ========== 
      1 xxxx 
      2 bbbb 
      3 cccc 
      4 yyyy 

        4 rows found 

SQL>select * from table2; 
     TID name 
=========== ========== 
      1 A3434 
      1 R5678 
      2 G6789 

        3 rows found 

SQL>select * from table3; 
     ID name 
=========== ========== 
      2 89T 
      2 78P 
      3 66J 

        3 rows found 

SQL>select t1.injid, t1.name, t2.name, t3.name 
SQL&from table1 t1 
SQL& left join table2 t2 on t1.InjID = t2.tid 
SQL& left join table3 t3 on t1.InjID = t3.id; 
     InjID name  name  name 
=========== ========== ========== ========== 
      1 xxxx  A3434  - 
      1 xxxx  R5678  - 
      2 bbbb  G6789  89T 
      2 bbbb  G6789  78P 
      3 cccc  -   66J 
      4 yyyy  -   - 

        6 rows found 

隨着空。夠好了?

+0

我不想得到笛卡爾產品。森林我使用相同,但我不尋找這個輸出。請參閱上面的輸出。 – Ammu

+0

如果我使用左連接表2和表3名稱給笛卡爾產品。我想要nulls – Ammu

+0

你甚至試過我的答案?它給你空位! – jarlh

相關問題