2016-03-23 127 views
-2

我有一個名爲POPR,MR的表。他們每個人都有相同client id,但不同ID。我怎樣才能使輸出像這樣?將多行組合成一個查詢

ID_PO | ID_PR | ID_MR 
1    -   - 
2    -   - 
3    -   - 
-    A   - 
-    B   - 
-    C   - 
-    -   I 
-    -   II 
-    -   III 
-    -   IV 

我使用JOIN試過,但數據出現了太多的

+0

通過編寫select語句 - 很多教程上在線如何做到這一點 –

+0

@EdHeal我試過使用select和join,但數據變得太多了 –

+1

爲什麼不發佈你到目前爲止嘗試過的東西? –

回答

0

假設我理解正確的話,你可能最好關閉使用union all

select id_po, id_pr, id_mr 
from (
    select id id_po, null id_pr, null id_mr, client_id from po 
    union all 
    select null, id, null, client_id from pr 
    union all 
    select null, null, id, client_id from mr 
) t 
group by client_id 

或許代替group by - where client_id = x ...

+0

沒錯,謝謝:) –

0

可以使用內部連接結合您的結果。事情是這樣的

SELECT * FROM PO 
INNER JOIN PR ON PO.client_id = PR.client_id 
INNER JOIN MR ON MR.client_id = PR.client_id 

但由於INNER JOIN是基於笛卡爾乘積,你可能會得到PO和PR的多個條目,如果表之間的關係是一個一對多。