2016-03-23 101 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的多个条目,如果表之间的关系是一个一对多。