ホームページ >データベース >mysql チュートリアル >オプションの外部結合を使用して複数の MySQL テーブルからデータを取得し、NULL 値を処理する方法
MySQL のオプションの外部結合を使用して複数のテーブルからデータを取得する
複数のテーブルからデータをクエリする場合、すべてのテーブルが取得できない状況がよく発生します。あるテーブルの行には、別のテーブルにも対応する行があります。このような場合、欠落データにプレースホルダーを追加しながら、1 つのテーブルからすべての行を取得することが望ましいです。
次のシナリオを考えてみましょう。1 つはカテゴリ (「カテゴリ」というタイトル) 用、もう 1 つは製品用の 2 つのテーブルがあるとします。 (「製品」というタイトル)。 「products」テーブルには、「categories」テーブルの「id」列を参照する列「ownerid」があります。
クエリの例
すべてのカテゴリを選択し、それぞれの最小価格と最大価格を確認するには、次のクエリを使用できます:
SELECT sc.*, MIN(s.price) AS minp, MAX(s.price) AS maxp FROM categories AS sc LEFT JOIN products AS s ON s.ownerid = sc.id GROUP BY sc.id
Outer Join
ここでの重要な変更は、LEFT JOIN ステートメントの使用です。結合条件を満たす行のみを返す INNER JOIN とは異なり、OUTER JOIN は左側のテーブル (この場合は「カテゴリ」) からすべての行を返し、右側のテーブル (「製品」) の欠損値に NULL を設定します。 .
NULL 値の処理
ただし、NULL 値は望ましくない場合があります。特定のシナリオでは。製品のないカテゴリに対して NULL の代わりにデフォルト値 (0 など) を返すには、IFNULL 関数を使用できます。
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
考慮事項
最後に、アプリケーションの特定の要件に応じて、欠落データに対して NULL を使用するかデフォルト値を使用するかを決定することが重要です。 NULL 値は実際にはデータが存在しないことを示し、デフォルト値は想定されたデータを表します。この違いを理解することは、データの整合性を維持するために非常に重要です。
以上がオプションの外部結合を使用して複数の MySQL テーブルからデータを取得し、NULL 値を処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。