私はこの MySQL の問題を解決しようとしています...問題の半分は私の質問の文言にあります。これが以前に解決されていた場合は申し訳ありません。多くの検索を行いましたが、解決策を見つけることができませんでした。
orders と order_items という 2 つのテーブルがあります。各注文には多くの注文アイテムを含めることができます。
1 つの注文項目のみを含み、別の注文項目を含まない注文を返す検索を実行する必要があり、その逆も同様です。
この点を説明するには:
テーブルオーダー
order_id 1 2 3
テーブル order_items
order_item_id | order_item_type | order_id 1 | あ | 1 2 | あ | 2 3 | ビ | 2 4 | ビ | 3
私がする必要があるのは、アイテム A のみ、アイテム B のみ、およびその両方を含む注文を取得することです。
ご覧のとおり、アイテム A のみが注文 1 を返し、アイテム B のみが注文 3 を返し、両方とも注文 2 を返す必要があります。
最善を尽くしたにもかかわらず、何も機能しません。これは、アイテム A のみの注文を返品する現在の試みです。
選択する * FROMオーダー LEFT OUTER JOIN order_items ON order_items.order_id = orders.order_id WHERE order_items.order_item_type IN ('A') AND order_items.order_item_type NOT IN ('B') GROUP BY orders.order_id
経験豊富な人はおそらく私の試みを見て推測できるので、これは注文1と注文2の両方を返します。これはおそらくサブクエリで実行できると思いますが、適切な結合で実行できると思います...方法がわかりませんそれをするために。ありがとうございました!