2012-11-30 58 views
3

我解決不了這個問題?希望有人能幫助我.. 我得到這個查詢:MySQL參考外場

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 未知列「V.ID」在「where子句」

+1

請問您可以添加表格說明嗎? – gks

+0

我從更復雜的一個提取了這個查詢...所以我試圖簡化...你想要什麼表格描述? – Wakan

回答

1

而不是使用兩個雙嵌套SELECT聲明,您可以使用GROUP BY來完成「每個ID的值的總和」。

嘗試這樣的查詢:

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表過程中的實際列。