SQL クエリが左結合ですべての行を返さない
このクエリは、jos_hp_properties テーブル (pr と短縮) からすべての行を取得することを目的としています。 jos_hp_properties2 テーブル (pr7 と短縮) の値を使用します。フィールドの名前はフィールドは、後者のテーブルの 23 に相当します。ただし、jos_hp_properties テーブルには 27 行が含まれているにもかかわらず、現在のクエリは 1 行のみを返します。
この問題に対処するには、次のように WHERE 句を JOIN ステートメントに移動する必要があります。
SELECT pr.*, pr7.value AS `room_price_high` FROM `jos_hp_properties` pr LEFT JOIN `jos_hp_properties2` pr7 ON pr7.property=pr.id AND pr7.field=23
この変更されたクエリでは、WHERE 句は結合前の結果セットを制限しなくなりました。代わりに、jos_hp_properties2 テーブルのフィールド 23 に対応する行がない場合でも、jos_hp_properties テーブルの行が含まれます (この場合、戻り値は NULL になります)。これにより、最初のテーブルのすべての行が、該当する場合は 2 番目のテーブルから必要なデータとともに返されるようになります。
以上がSQL 左結合ですべての行ではなく 1 行だけが返されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。