MySQL クエリで JOIN に苦労しています。どういうわけか、私の結果が私が望むものではない理由を見つけることができません。
テーブル orders とテーブル products の 2 つのテーブルがあります。テーブル product は、注文の order.id を保持します。したがって、1 つの注文に複数の製品を含めることができるため、たとえば、products テーブルには 1 つの注文に対して 2 つのレコードが保持されます。
必要な結果は、製品の VAT が 21 であるすべての注文です。
テーブルの例。
orders
id | customer
---------------
1 | John Doe
2 | Hello World
order_products
id | order_id | product | vat
1 | 1 | Porsche 911 GT4 | 21
2 | 1 | Audi R8 LMS | 21
3 | 1 | Ferrari Enzo | 19
3 | 2 | Bugatti Veyron | 19
いいえ、製品の VAT が 21 であるすべての注文が必要です。したがって、テーブル order_products で LEFT JOIN を実行します。
SELECT orders.id, orders.customer, order_products.product FROM orders LEFT JOIN order_products ON orders.id = order_products.order_id WHERE order_products.vat = '21'
これは以下を返します。
1 John Doe Porsche
1 John Doe Audi R8 LMS
しかし、注文のすべての製品ではなく、orders.id が重要であるため、必要な結果は 1 つだけです。私は order_products に参加して、VAT 21 のみで注文を取得します。現時点では、これを修正する方法についてのオプションが不足しています。このサイトや他のサイトで結合に関するいくつかのトピックを読んだ後でも.