私の SQL クエリは本当に時間がかかるので、もっと良い書き方があるのではないかと考えました。
テーブル「Vorgangdetails」には、「RecId」に番号を持つアイテムがあります。この番号は、"WeiterfuehrungVonPos" の別の行にある可能性があります。その場合、この新しい行の "RecId" に番号があり、"WeiterfuehrungVonPos" の別の行にある可能性があります ... (全体で最大 3 回) クエリに時間がかかりすぎます。より速い方法を知っていますか?
SELECT
SUM(VD_AB.Menge) AS Amount,
Artikel.Artikelnummer AS Artikelnummer,
FROM Artikel
INNER JOIN Vorgangdetails AS VD_AB
ON LEFT(VD_AB.Auftrag, 3) = 'AF-'
AND Artikel.Artikelnummer = VD_AB.Artikel
--> VD_AB と同じテーブルから最大 1 つの結果を追加
LEFT JOIN Vorgangdetails AS VD_L
ON LEFT(VD_L.Auftrag, 3) = 'LF-'
AND Artikel.Artikelnummer = VD_L.Artikel
AND VD_L.WeiterfuehrungVonPos = VD_AB.RecId
--> 再度 ... VD_AB と同じテーブルから最大 1 つの結果を追加
LEFT JOIN Vorgangdetails AS VD_RvL
ON VD_L.RecID = VD_RvL.WeiterfuehrungVonPos
AND LEFT(VD_RvL.Auftrag, 3) = 'RE-'
--> 再度 ... VD_AB と同じテーブルから最大 1 つの結果を追加
LEFT JOIN Vorgangdetails AS VD_RvAB
ON VD_AB.RecID = VD_RvAB.WeiterfuehrungVonPos
AND LEFT(VD_RvAB.Auftrag, 3) = 'RE-'
WHERE (VD_RvAB.Auftrag = '' AND VD_RvL.Auftrag = '')
GROUP BY(Artikelnummer)
. .
Final RESULT) -------------- Roman Pekar からのすべての回答を反映するように編集
SELECT
SUM(VD_AB.Menge) AS Auftragsmenge,
Artikel.Artikelnummer AS Artikelnummer,
FROM Artikel
INNER JOIN Vorgangdetails AS VD_AB
ON VD_AB.Auftrag LIKE 'AB-%'
AND Artikel.Artikelnummer = VD_AB.Artikel
LEFT JOIN Vorgangdetails AS VD_L
ON Artikel.Artikelnummer = VD_L.Artikel
AND VD_L.WeiterfuehrungVonPos = VD_AB.RecId
AND (VD_L.Auftrag LIKE 'LF-%' OR VD_L.Auftrag LIKE 'RE-%')
LEFT JOIN Vorgangdetails AS VD_RvL
ON VD_L.Auftrag is not null
AND VD_L.Auftrag LIKE 'LF-%'
AND VD_L.RecID = VD_RvL.WeiterfuehrungVonPos
AND VD_RvL.Auftrag LIKE 'RE-%'
WHERE (Artikel.Kategorie = 'KARSTADT->Aktive')
AND (VD_L.Auftrag LIKE 'LF-%' AND VD_RvL.Auftrag = '')
AND NOT (VD_L.Auftrag LIKE 'RE-%')
GROUP BY(Artikelnummer)