対応関係が欠落している MySQL の 2 つのテーブルから選択する
MySQL の 2 つのテーブルからデータを取得し、すべての行が 1 つに含まれていないケースを処理するにはテーブルのもう一方のテーブルに対応する行がある場合は、外部結合を利用できます。このアプローチは、時代遅れの暗黙的結合方法とは異なり、柔軟性が高くなります。
次の例を考えてみましょう。
カテゴリ (列 ID とタイトルを持つ) と製品 (列 ID を持つ) という 2 つのテーブルがあります。 、所有者 ID、タイトル、および価格。所有者 ID はカテゴリ テーブルの ID を参照します)。
クエリは、すべてのカテゴリとその最小価格と最大価格をグループ化して取得することを目的としています。カテゴリID。ただし、現在のクエリでは、対応する製品のないカテゴリが除外されます。
この問題を解決するには、LEFT JOIN を使用します。
SELECT sc.*, IFNULL(MIN(s.price), 0) AS minp, IFNULL(MAX(s.price), 0) AS maxp FROM categories AS sc LEFT JOIN products AS s ON s.ownerid = sc.id GROUP BY sc.id
LEFT JOIN により、カテゴリ テーブルのすべての行が確実に含まれます。 products テーブルに対応する行がない場合でも。 IFNULL 関数は、製品のないカテゴリの minp と maxp に 0 を割り当て、NULL 値が表示されないようにします。
または、特定の要件に応じて、これらのカテゴリに対して 0 ではなく NULL を返すこともできます。
以上が対応者が欠落している 2 つの MySQL テーブルからデータを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。