子查询中的MYSQL引用外部字段--- SUM与其他列上的不同

时间:2012-11-30 12:03:12

标签: mysql select

我无法解决这个问题...希望有人能帮帮我.. 我收到了这个问题:

  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'

1 个答案:

答案 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表中的实际列。