MySQL データベースに 3 つのテーブルがあります。最初のテーブルにはユーザーが含まれ、2 番目のテーブルには項目が含まれます。以下にこの 2 つの構造を示します。
リーリー3 番目のテーブルは接続テーブルです。
リーリーユーザーとそのユーザーに割り当てられていないプロジェクトのリストを返すクエリが必要です。
例では 次のユーザーがいます
リーリー以下の商品もございます
リーリー私の結合テーブル内
リーリーしたがって、ユーザーが所有していないアイテムのリストを取得したいと考えています。例:
リーリーそのような結果を得るのに最適なクエリは何ですか。いくつかの左結合、左外部結合、左結合などを試していますが、成功しません。
編集1: これまでのところ、次のクエリを試してみました:
ああああ
通常、
パフォーマンスを向上させるには、ユーザーと製品をクロス結合してすべての可能な組み合わせを生成し、ブリッジ テーブルに既に存在する関連付けをフィルターで除外します。
リーリーuser_items(userid, itemid)
にインデックスが必要です (これらの列に
unique制約がある場合、それはすでに存在しているはずです)。
p>逆引き左結合
を使用してロジックを表現することもできます:
リーリー