ホームページ > データベース > mysql チュートリアル > 複数の MySQL テーブルからデータを選択し、欠落している対応関係を処理するにはどうすればよいですか?

複数の MySQL テーブルからデータを選択し、欠落している対応関係を処理するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-29 20:57:11
オリジナル
266 人が閲覧しました

How to Select Data from Multiple MySQL Tables and Handle Missing Correspondences?

MySQL を使用した複数のテーブルからのデータの選択、欠落した対応関係の処理

オンライン ショップを維持する場合、次のような複数のテーブルからデータを取得する必要がある状況に遭遇することがあります。カテゴリや製品として。ただし、一方のテーブルのすべての行にもう一方のテーブルに対応するエントリがあるわけではない場合、問題が発生します。このシナリオに対処するために、2 つのテーブルからデータを選択し、対応関係がない場合でもすべての行が返されるようにする方法を検討してみましょう。

問題ステートメント

2 つのテーブルを考えてみましょう。1 つは次のカテゴリ用です。列 ID とタイトル、もう 1 つは列 ID、ownerid、title、price を持つ製品の列です。ownerid は親カテゴリの ID を参照します。次のクエリを使用して、すべてのカテゴリと各カテゴリの最小価格と最大価格を取得することを目的としています。

SELECT
    sc.*,
    MIN(s.price) AS minp,
    MAX(s.price) AS maxp
FROM
    categories AS sc,
    products AS s
WHERE
    s.ownerid = sc.id
GROUP BY
    sc.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
ログイン後にコピー

説明

  • 左結合: 左JOIN 構文を使用すると、右側のテーブル (製品) に一致する行がない場合でも、左側のテーブル (カテゴリ) のすべての行が確実に含まれます。
  • IFNULL:カテゴリに製品がない場合に minp と maxp の潜在的な null 値を処理する IFNULL() 関数。 null を 0 に置き換え、null の代わりにデフォルト値を返します。

この更新されたクエリを使用すると、すべてのカテゴリとそれぞれの最小価格と最大価格を取得できます。製品のないカテゴリの minp 値と maxp 値は 0 になり、すべてのカテゴリを含めるという要件を満たします。

考慮事項

空のカテゴリのデフォルト値として 0 を使用する代わりに、次のオプションを選択することもできます。代わりに null を返します。 0 と null のどちらを使用するかは、アプリケーションの特定の要件によって異なります。

MySQL で外部結合の概念をマスターし、null 値を処理することで、複数のテーブルからデータを効率的に抽出でき、データの完全性と正確性を確保できます。結果。

以上が複数の MySQL テーブルからデータを選択し、欠落している対応関係を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート