我有一个名为PO
,PR
,MR
的表。他们每个人都有相同client id
,但不同ID
。我怎样才能使输出像这样?将多行组合成一个查询
ID_PO | ID_PR | ID_MR
1 - -
2 - -
3 - -
- A -
- B -
- C -
- - I
- - II
- - III
- - IV
我使用JOIN试过,但数据出现了太多的
我有一个名为PO
,PR
,MR
的表。他们每个人都有相同client id
,但不同ID
。我怎样才能使输出像这样?将多行组合成一个查询
ID_PO | ID_PR | ID_MR
1 - -
2 - -
3 - -
- A -
- B -
- C -
- - I
- - II
- - III
- - IV
我使用JOIN试过,但数据出现了太多的
假设我理解正确的话,你可能最好关闭使用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
...
没错,谢谢:) –
可以使用内部连接结合您的结果。事情是这样的
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的多个条目,如果表之间的关系是一个一对多。
通过编写select语句 - 很多教程上在线如何做到这一点 –
@EdHeal我试过使用select和join,但数据变得太多了 –
为什么不发布你到目前为止尝试过的东西? –