私のitems
テーブルのすべてのレコードを表示したい。しかし、いくつかの量は負の値である必要があります。複数のテーブルを持つMySQLストアドプロシージャ
BEGIN
SET @ItemId1 = (SELECT ItemId FROM items);
SELECT
SUM(ROUND(Quantity))
FROM (
SELECT
COALESCE(SUM(od.Quantity),0) as Quantity
FROM sts as T1
LEFT JOIN orderset_details as od
ON T1.OrdersetId = od.OrdersetId
WHERE od.ItemId = @ItemId1
UNION ALL
SELECT
COALESCE(SUM(od.Quantity),0) as Quantity
FROM drs as T2
LEFT JOIN orderset_details as od
ON T2.OrdersetId = od.OrdersetId
WHERE od.ItemId = @ItemId1
UNION ALL
SELECT
COALESCE(
SUM(
IF(r.AddsToStock = '1', od.Quantity, 0 - od.Quantity)
),0
) as Quantity
FROM stockadjustment as T3
LEFT JOIN reason as r
ON r.ReasonId = T3.ReasonId
LEFT JOIN orderset_details as od
ON T3.OrdersetId = od.OrdersetId
WHERE od.ItemId = @ItemId1
UNION ALL
SELECT
COALESCE(
SUM(
IF(T4.OrdersetId = od.OrdersetId, 0 - od.Quantity, -1 * od.Quantity)
),0
) as Quantity
FROM issueslip as T4
LEFT JOIN orderset_details as od
ON T4.OrdersetId = od.OrdersetId
WHERE od.ItemId = @ItemId1
UNION ALL
SELECT
COALESCE(
SUM(
IF(T4.OrdersetId = od.OrdersetId, 0 - od.Quantity, -1 * od.Quantity)
),0
) as Quantity
FROM invoice as T4
LEFT JOIN orderset_details as od
ON T4.OrdersetId = od.OrdersetId
WHERE od.ItemId = @ItemId1
) as t;
END
このコードにはエラーMySQL said: #1242 -Subquery returns more than 1 row
があります。
すべてのアイテムの数量をすべて表示します。それで私はなぜ@ ItemId1を持っているのですか?ItemId from items
。どうやってやるの?
最初の行を確認してください。複数の値を選択しています –
auto_incrementの値が重複しないようにします –
はい、スカラーに複数の値を割り当てようとしています。 –