3

私はこの問題を解決できません...誰かが私を助けてくれることを願っています..私はこのクエリを受け取りました:

  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)する必要がありますが、DISTINCTD.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' in'whereclause'

4

1 に答える 1

1

2 つの二重ネストされた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=....

2番目にネストされたクエリを削除することにより、サブクエリでアクセスできるようになります。もちろん、それがテーブルV.ID内の実際の列である間は保留されます。ven

于 2012-11-30T13:33:02.233 に答える