テーブルの 1 つが空の場合、mysql でのクエリでは結果が 0 になります
P粉848442185
P粉848442185 2023-09-13 13:32:30
0
1
459

これらの 3 つのテーブルがあります:

リーリー

次の条件の少なくとも 1 つを満たす行をレポート テーブルから取得したいと考えています:

リーリー

まず、一般公開される新しいレポートを作成します:

リーリー

この場合、別のレポートには user_id = 1 でのみアクセスできます:

リーリー

この場合、別のレポートには group_id = 1

によってのみアクセスできます。 リーリー

現在、3 つの行があります。それぞれにアクセス可能で、1 つの行は user_id = 1 によってのみアクセスでき、もう 1 つの行は group_id = 1 によってのみアクセスできます。

user_id = 1 であるすべての行を教えてください:

リーリー

2 行が表示されます。それは動作します。

group_id = 1 のすべての行を教えてください:

リーリー

2 行が表示されます。それは動作します。

###しかし。 report_users または report_groups が空の場合、結果は得られません。最初に次のクエリを実行します:

リーリー

前と同じクエリを実行すると、空のセットが返されます。なぜ?実際、送信している user_id と group_id に違いはないようです。常に 0 行が得られます。

私には、2 つのテーブルのうちの 1 つが空であるという理由だけで結果が得られないように思えます。 クエリ自体に何か問題があるのでしょうか?

P粉848442185
P粉848442185

全員に返信(1)
P粉087951442

このコード行をどうするか:

リーリー

は 3 つのテーブルの (古いスタイルの) CROSS JOIN です。これは、テーブルの 1 つが空の場合、結果も空になることを意味します。

代わりに EXISTS を使用してください:

リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート