ホームページ > データベース > mysql チュートリアル > 一部のカテゴリに製品がない場合でも、MySQL ですべてのカテゴリとその最小/最大製品価格を取得する方法

一部のカテゴリに製品がない場合でも、MySQL ですべてのカテゴリとその最小/最大製品価格を取得する方法

Linda Hamilton
リリース: 2024-12-04 16:25:16
オリジナル
677 人が閲覧しました

How to Retrieve All Categories and Their Minimum/Maximum Product Prices in MySQL, Even When Some Categories Have No Products?

MySQL で行が等しくない 2 つのテーブルから選択する

カテゴリと商品という 2 つのテーブルを持つオンライン ショッピング データベースでは、一般的なタスクは次のとおりです。すべてのカテゴリと各カテゴリの最小および最大の製品価格を取得します。ただし、単純なクエリでは問題が発生します。製品のないカテゴリが結果から除外されます。

この課題に対処するには、暗黙的結合の代わりに外部結合を使用する必要があります。外部結合を使用すると、もう一方のテーブル (製品) に対応する行がない場合でも、一方のテーブル (この場合はカテゴリ) から行を取得できます。具体的には、ここでは左結合が使用されているため、すべてのカテゴリが結果に含まれます。

さらに、製品のないカテゴリの null 値を 0 に置き換えるには、IFNULL() 関数が使用されます。この関数は、最初の引数で指定された式の値を受け取り、それが null の場合は、代わりに 2 番目の引数で指定された値を返します。

更新されたクエリ構文は次のとおりです。

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
ログイン後にコピー

外部結合と IFNULL() 関数を使用することで、すべてのカテゴリを取得し、製品のないカテゴリが minp 値と maxp 値 0 で表されるようにすることができます。このクエリは、一方のテーブルのすべての行にもう一方のテーブルに対応するエントリがない場合でも、2 つのテーブルから選択する必要があります。

以上が一部のカテゴリに製品がない場合でも、MySQL ですべてのカテゴリとその最小/最大製品価格を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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