【问题标题】:How to combine these three tables into one table [closed]如何将这三个表组合成一个表[关闭]
【发布时间】:2021-11-21 14:04:39
【问题描述】:

我有三张桌子

  1. PKS
Satker PKS
FIK 2
FT 2
  1. IA
Satker IA
FIK 1
FT 2
  1. MOU
Satker MOU
FIK 3

我想像这样将它的三个组合成一个表
Combined table

Satker PKS IA MOU
FIK 2 1 3
FT 2 2

我该怎么做?,我已经尝试左连接,但结果不是我预期的。

SELECT pks.satuan_kerja, count(pks.satuan_kerja) AS PKS, count(pelaksanaan_kerjasama.satuan_kerja) AS IA, count(mou.subsatker_mou) AS MOU
FROM pks
LEFT JOIN pelaksanaan_kerjasama
ON pks.satuan_kerja = pelaksanaan_kerjasama.satuan_kerja
LEFT JOIN mou
ON pks.satuan_kerja = mou.subsatker_mou
GROUP BY pks.satuan_kerja

【问题讨论】:

  • 如果没有任何主键,您可能无法进行认真的工作。表中是否有任何主键?请分享表结构

标签: mysql sql postgresql


【解决方案1】:

用途:

CREATE TABLE PKS_tbl          (
             Satker varchar(9),
               PKS int(4)     );
    
INSERT INTO PKS_tbl VALUES('FIK',2), ('FT',2);
   
CREATE TABLE IA_tbl          (
             Satker varchar(9),
             IA int(4)       );
 
INSERT INTO IA_tbl VALUES('FIK',1), ('FT',2);

CREATE TABLE MOU_tbl    (
            Satker varchar(9),
            MOU int(4)  );   

INSERT INTO MOU_tbl VALUES('FIK',3);


select p.Satker,
       PKS,
       i.IA,
       m.MOU
from PKS_tbl p 
inner join
(
select Satker, IA from IA_tbl ) as i on p.Satker=i.Satker
left join
(select Satker, MOU from MOU_tbl ) as m on p.Satker=m.Satker ;

演示:https://www.db-fiddle.com/f/7yUJcuMJPncBBnrExKbzYz/111

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-21
    • 1970-01-01
    • 1970-01-01
    • 2021-10-01
    • 2014-06-04
    • 2020-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多