2016-04-25 8 views
0

これは私が持っているエラーです。だから私は知らない。私を助けてください。サブクエリが1より大きい値を返しました。 SQLエラー

サブクエリが1より大きい値を返しました。 サブクエリが、=、!<、< =、>、> =、またはサブクエリが式 として使用されている場合は、これは許可されません。

UPDATE Kho 
/*SET Kho.Xuat = SUM(PhieuXuat.SL)*/ 
SET Kho.Xuat = (SELECT SUM(PhieuXuat.SL) AS SLuong FROM PhieuXuat group by PhieuXuat.MaVT) 
FROM Kho 
INNER JOIN PhieuXuat 
ON (Kho.MaVT = PhieuXuat.MaVT) 
+0

ありがとうございました。それはgreateです! –

+0

あなたに最も役立つと思われる回答を受け入れてください。 –

答えて

2

これは、サブクエリが許可されていない複数の行を戻したことを意味します。サブクエリ内の追加WHERE句を注意

UPDATE k 
    SET k.Xuat = (SELECT SUM(p.SL) FROM PhieuXuat p WHERE p.MaVT = k.MaVT) 
FROM Kho k 

:あなたはあなたのようUPDATE文を書くことができます。同じ行の複数の更新を防ぐために、JOINも削除しました。

+0

ありがとうございました! –

2

エラーは、内部クエリが複数の行を返すためです。 JOIN内でグループの合計を試してから、このセットを結合して正しい結果を得ることができます。

NB:内部クエリは1回だけ評価されます。

UPDATE Kho 
/*SET Kho.Xuat = SUM(PhieuXuat.SL)*/ 
SET Kho.Xuat = sumSL 
FROM Kho 
INNER JOIN 
(SELECT SUM(PhieuXuat.SL) as sumSL,PhieuXuat.MaVT FROM PhieuXuat group by PhieuXuat.MaVT)P 
ON (Kho.MaVT = P.MaVT) 
+0

ありがとうございます!助けて –

関連する問題