【发布时间】:2017-09-01 03:30:03
【问题描述】:
我有一个像这样的“schLoc”表
------------------------
| id | ... | ... | ... |
------------------------
| 1 | ... | ... | ... |
| 2 | ... | ... | ... |
| 3 | ... | ... | ... |
| 4 | ... | ... | ... |
| 5 | ... | ... | ... |
| .. | ... | ... | ... |
------------------------
还有另一个像这样的“schLocDett”表,像这样 schLoc.id=schLocDett.idDoc
-------------------------------
| idDoc | qta | ... | merce |
-------------------------------
| 1 | 1 | ... | fattLoc |
| 1 | 1 | ... | fattSrv |
| 2 | 3 | ... | fattLoc |
| 2 | 2 | ... | notcSrv |
| 2 | 2 | ... | fattSrv |
| 3 | 5 | ... | fattSrv |
| 3 | 3 | ... | notcSrv |
| 3 | 3 | ... | fattLoc |
| 3 | 7 | ... | fattLoc |
| 4 | 5 | ... | notcSrv |
| 4 | 4 | ... | fattSrv |
| 4 | 1 | ... | fattSrv |
| 5 | 1 | ... | notcSrv |
| ... | ... | ... | ....... |
-------------------------------
我想要完整的 schLoc 列表和每个 id 相关联的 qta 的总和,但仅适用于 merce=fattLoc。如果不存在,总和将为 0。 这是我期望的结果
---------------------------
| id | sumQta | ... | ... |
------------------------
| 1 | 1 | ... | ... |
| 2 | 3 | ... | ... |
| 3 | 10 | ... | ... |
| 4 | 0 | ... | ... |
| 5 | 0 | ... | ... |
| .. | ... | ... | ... |
---------------------------
我试试这个:
SELECT TOT.sumQta, TAB.*,
FROM schLoc AS TAB, schLocDett AS DETT,
(SELECT idDoc, SUM(qta) AS sumQta
FROM schLocDett
WHERE merce='fattLoc'
GROUP BY idDoc) AS TOT
WHERE TAB.id>0
AND TAB.id=DETT.idDoc
AND TAB.id=TOT.idDoc
但没有得到 ID 4 和 5
欢迎提出建议
【问题讨论】:
标签: mysql if-statement select sum subquery