3 つのテーブル (一部は 2 回) をクエリする必要がある SQL クエリがあり、必要な結果が得られません。
「articles」で検索文字列 (「tennis」) を検索し、これらの記事の 2 番目のテーブル「orderdetails」を検索する必要があります。ヒット数は、注文された金額を示します。
次に、これらの商品がすでに配達されているかどうかを確認する必要があります。そこで、「orderdetails」のテーブル「orders」を検索し、これらの注文に「delivery」があるかどうかを同じテーブルで調べます。「注文」と「配送」には、その種類を示すフィールドがあります。
したがって、「配送」が「注文」によって転送されたかどうかを確認する必要があります。
次に、この「配信」に「記事」が含まれているかどうかを確認し、配信された記事を合計します。
納品数が注文数よりも少ない場合は、このレコードを表示したい。
これまでのところ、これらのアイテム以外にも機能します: - [解決済み] HLGEM のおかげで、「配送」のない「注文」はまったく表示されません - [解決済み] 「配送」と同じ金額の「注文」は表示されますが、表示されません彼らに望んでいます。
これが私がこれまでに持っているものです:
PrO:注文の処理
PrD: 配送の処理
a: ArticleItem
p: processOrderItem
d: deliveryItem
【コードを更新しました】
SELECT
a.Articlenumber AS Article,
PrO.Number AS Order,
PrD.Number AS Delivery,
p.Amount AS Orderamount,
SUM(d.Amount) AS Deliveryamount,
(p.Amount - Deliveryamount) AS OpenAmount
FROM Article AS a
INNER JOIN ProcessesDetails AS p
ON (a.ArticleNumber = p.Article)
AND LEFT(p.Order, 3) = 'OR-'
INNER JOIN Processes as PrO
ON PrO.Number = p.Order
AND TEXTSEARCH('Delivery:' IN PrO.Forwarded)
LEFT JOIN Processes as PrD
ON PrO.Nummer = PrD.ForwardedFrom
AND LEFT(PrD.Number,3) = 'DE-'
INNER JOIN ProcessesDetails as d
ON PrD.Number = d.Order
AND d.Article = p.Article
WHERE (a.Categorie = 'tennis')
GROUP BY(Article)
次の行を追加すると、2番目の問題が解決しました。
HAVING Deliveryamount < Orderamount