我无法解决这个问题...希望有人能帮帮我.. 我收到了这个问题:
SELECT V.ID, ....,
(SELECT SUM(D.value)
FROM E
LEFT JOIN I ON E.ID = I.f1
LEFT JOIN D ON I.f2 = D.ID
WHERE E.ID_ven = V.ID) inc
FROM ven V
WHERE V.ID=....
问题是: 我必须使用SUM(D.values)但仅限于DISTINCT D.ID值。 我尝试用子查询:
SELECT V.ID,....,
(SELECT SUM(D.value) FROM (
SELECT DISTINCT D.ID, D.value
FROM E
LEFT JOIN I ON E.ID = I.f1
LEFT JOIN D ON I.f2 = D.ID
WHERE E.ID_ven = V.ID) A1 ) inc
FROM ven V WHERE V.ID=....
但是mysql给了我: 错误代码:1054 'where子句'中的未知列'V.ID'
答案 0 :(得分:1)
您可以使用SELECT
来完成“每个ID的值总和”,而不是使用两个双嵌套GROUP BY
语句。
尝试这样的查询:
SELECT V.ID,....,
(
SELECT
D.ID, SUM(D.value)
FROM E
LEFT JOIN I ON E.ID = I.f1
LEFT JOIN D ON I.f2 = D.ID
WHERE
E.ID_ven = V.ID
GROUP BY
D.ID
) inc
FROM ven V
WHERE V.ID=....
通过删除第二个嵌套查询,您应该能够访问子查询中的V.ID
,当然它是ven
表中的实际列。