ホームページ  >  に質問  >  本文

接続されたテーブルに存在しないレコードを取得する

MySQL データベースに 3 つのテーブルがあります。最初のテーブルにはユーザーが含まれ、2 番目のテーブルには項目が含まれます。以下にこの 2 つの構造を示します。

リーリー

3 番目のテーブルは接続テーブルです。

リーリー

ユーザーとそのユーザーに割り当てられていないプロジェクトのリストを返すクエリが必要です。

例では 次のユーザーがいます

リーリー

以下の商品もございます

リーリー

私の結合テーブル内

リーリー

したがって、ユーザーが所有していないアイテムのリストを取得したいと考えています。例:

リーリー

そのような結果を得るのに最適なクエリは何ですか。いくつかの左結合、左外部結合、左結合などを試していますが、成功しません。

編集1: これまでのところ、次のクエリを試してみました:

ああああ

P粉773659687P粉773659687406日前480

全員に返信(1)返信します

  • P粉818088880

    P粉8180888802023-09-11 10:51:22

    通常、 ユーザーと製品をクロス結合してすべての可能な組み合わせを生成し、ブリッジ テーブルに既に存在する関連付けをフィルターで除外します。 リーリー

    パフォーマンスを向上させるには、

    user_items(userid, itemid) にインデックスが必要です (これらの列に unique 制約がある場合、それはすでに存在しているはずです)。 逆引き

    左結合を使用してロジックを表現することもできます: リーリー

    返事
    0
  • キャンセル返事