【发布时间】:2021-01-08 15:43:52
【问题描述】:
我有表 tb_orders
| id_order | lot | rekanan | no_order | pec |
|---|---|---|---|---|
| 5555 | 1 | GOZNAK | 390 | y |
| 6666 | 1 | KOMSCO | 391 | y |
我还有一张桌子 tb_pengambilans_detail
| id | id_order | tanggal | jumlah |
|---|---|---|---|
| 137 | 5555 | 2021-01-05 09:36:16 | 100000 |
| 136 | 6666 | 2021-01-05 09:35:57 | 100000 |
| 94 | 6666 | 2020-12-15 15:00:47 | 100000 |
| 138 | 5555 | 2021-01-05 09:37:51 | 100000 |
表格 tb_lini_pengambilans_detail
| id | id_order | tanggal | deret5 |
|---|---|---|---|
| 38 | 6666 | 2020-12-08 09:26:36 | 30000 |
| 39 | 5555 | 2020-12-08 09:31:49 | 10000 |
| 40 | 6666 | 2020-12-14 07:55:36 | 80000 |
| 41 | 6666 | 2020-12-14 07:57:34 | 20000 |
表 tb_produksi_cutpacks_detail
| id | tanggal | id_order | hcts | unfit |
|---|---|---|---|---|
| 30 | 2021-01-04 13:02:10 | 5555 | 5000 | 0 |
| 32 | 2021-01-04 14:10:05 | 5555 | 0 | 10000 |
| 34 | 2021-01-04 15:11:57 | 5555 | 0 | 2000 |
| 35 | 2021-01-04 15:14:10 | 6666 | 9000 | 0 |
表 tb_lini_produksi_cutpacks_detail
| id | tanggal | id_order | xbaik | xderet5 |
|---|---|---|---|---|
| 16 | 2021-01-04 14:52:38 | 5555 | 4000 | 1000 |
| 18 | 2021-01-04 14:53:21 | 6666 | 8000 | 0 |
| 19 | 2021-01-04 14:53:36 | 6666 | 0 | 2000 |
| 21 | 2021-01-04 14:57:41 | 5555 | 0 | 15000 |
我分别做了,所有结果都是正确的,不重复
SELECT a.rekanan,
SUM(COALESCE(b.jumlah,0)) AS `pengambilan`
FROM tb_orders a
LEFT JOIN tb_pengambilans_detail b USING(id_order)
WHERE a.pec='y'
GROUP BY a.rekanan
结果
| rekanan | pengambilan |
|---|---|
| GOZNAX | 200000 |
| KOMSCO | 200000 |
SELECT a.rekanan,
SUM(COALESCE(c.unfit + c.hcts,0)) AS prod_hcts
FROM tb_orders a
LEFT JOIN tb_produksi_cutpacks_detail c USING(id_order)
WHERE a.pec='y'
GROUP BY a.rekanan
结果
| rekanan | prod_hcts |
|---|---|
| GOZNAX | 17000 |
| KOMSCO | 9000 |
SELECT a.rekanan,
SUM(COALESCE(d.deret5 ,0)) AS `pengambilanlini`
FROM tb_orders a
LEFT JOIN tb_lini_pengambilans_detail d USING(id_order)
LEFT JOIN tb_lini_produksi_cutpacks_detail e USING(id_order)
WHERE a.pec='y'
GROUP BY a.rekanan
结果
| rekanan | pengambilanlini |
|---|---|
| GOZNAX | 20000 |
| KOMSCO | 260000 |
最后
SELECT a.rekanan,
SUM(COALESCE(e.xbaik + e.xderet5 ,0)) AS prod_hctslini
FROM tb_orders a
LEFT JOIN tb_lini_produksi_cutpacks_detail e USING(id_order)
WHERE a.pec='y'
GROUP BY a.rekanan
结果
| rekanan | prod_hctslini |
|---|---|
| GOZNAX | 20000 |
| KOMSCO | 10000 |
在我确定一切之后,我加入了所有表格,结果都是双倍的......
SELECT a.rekanan,
SUM(COALESCE(b.jumlah,0)) AS `pengambilan`,
SUM(COALESCE(c.unfit + c.hcts,0)) AS prod_hcts,
SUM(COALESCE(d.deret5 ,0)) AS `pengambilanlini`,
SUM(COALESCE(e.xbaik + e.xderet5 ,0)) AS prod_hctslini
FROM tb_orders a
LEFT JOIN tb_pengambilans_detail b USING(id_order)
LEFT JOIN tb_produksi_cutpacks_detail c USING(id_order)
LEFT JOIN tb_lini_pengambilans_detail d USING(id_order)
LEFT JOIN tb_lini_produksi_cutpacks_detail e USING(id_order)
WHERE a.pec='y'
GROUP BY a.rekanan
结果
| rekanan | pengambilan | prod_hcts | pengambilanlini | prod_hctslini |
|---|---|---|---|---|
| GOZNAX | 1200000 | 68000 | 120000 | 120000 |
| KOMSCO | 1200000 | 108000 | 520000 | 60000 |
有什么办法让SQL结果不是double.. 请告诉我,以便解决问题.. 非常感谢
【问题讨论】:
标签: mysql