【问题标题】:Merge data from multiple tables合并多个表中的数据
【发布时间】:2019-03-29 04:11:23
【问题描述】:

我想合并来自 4 个不同查询的数据 所以这是我的查询

SELECT dinas.dinas_id,dinas_nama, COUNT(sc_user.user_id) as total_user from dinas left JOIN sc_user on dinas.dinas_id=sc_user.dinas_id GROUP by dinas.dinas_id
UNION
SELECT dinas.dinas_id,dinas_nama, COUNT(sc_bidang.bi_id) as total_bidang from dinas left JOIN sc_bidang on dinas.dinas_id=sc_bidang.dinas_id GROUP by dinas.dinas_id
UNION
SELECT dinas.dinas_id,dinas_nama, COUNT(sc_kegiatan.ke_id) as total_kegiatan from dinas left JOIN sc_kegiatan on dinas.dinas_id=sc_kegiatan.dinas_id GROUP by dinas.dinas_id
UNION
SELECT dinas.dinas_id,dinas_nama, COUNT(sc_paket.ke_id) as total_paket from dinas left JOIN sc_kegiatan on dinas.dinas_id=sc_kegiatan.dinas_id left join sc_paket on sc_paket.ke_id=sc_kegiatan.ke_id GROUP by dinas.dinas_id

但是结果会是这样的

但我想要这样的结果

dinasid | dinas_nama | total_user | total_bidang | total_kegiatan| total_paket

也许有人可以帮我合并这些数据?

这是我的小提琴 https://www.db-fiddle.com/f/tgohmvPrFnbNz8VgezbsFA/0

(count) 结果必须是这样的

【问题讨论】:

  • 如果你没有得到任何其他准确的答案,那么你可以使用子查询来获得你想要的输出。

标签: mysql


【解决方案1】:

您的所有表达式都按dinas.dinas_id 分组,因此左连接的总和最终如下:

SELECT dinas.dinas_id,
       dinas_nama,
       COUNT(DISTINCT sc_user.user_id) as total_user,
       COUNT(DISTINCT sc_bidang.bi_id) as total_bidang,
       COUNT(DISTINCT sc_kegiatan.ke_id) as total_kegiatan,
       COUNT(DISTINCT sc_kegiatan.ke_id, sc_paket.pa_id) as total_paket
FROM dinas
LEFT JOIN sc_user on dinas.dinas_id=sc_user.dinas_id
LEFT JOIN sc_bidang on dinas.dinas_id=sc_bidang.dinas_id
LEFT JOIN sc_kegiatan on dinas.dinas_id=sc_kegiatan.dinas_id
LEFT JOIN sc_paket on sc_paket.ke_id=sc_kegiatan.ke_id
GROUP by dinas.dinas_id

【讨论】:

  • (*count) 的结果不符合预期。
  • 如果我使用单个查询进行测试,我会编辑我的问题并添加小提琴和结果
  • 感谢您的帮助。 total_paket 需要最接近的重新验证(它是 2 个连接),因为我认为即使在您的问题中 COUNT(sc_paket.pa_id) as total_paket 也是有意的。
猜你喜欢
  • 1970-01-01
  • 2016-04-29
  • 2019-05-02
  • 2015-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-16
相关资源
最近更新 更多