ホームページ > データベース > mysql チュートリアル > MySQL で、製品のないカテゴリも含めて、すべてのカテゴリとその最小/最大製品価格を取得するにはどうすればよいですか?

MySQL で、製品のないカテゴリも含めて、すべてのカテゴリとその最小/最大製品価格を取得するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-19 00:07:10
オリジナル
853 人が閲覧しました

How Can I Retrieve All Categories and Their Minimum/Maximum Product Prices, Including Categories Without Products, in MySQL?

MySQL で対応が欠落している複数のテーブルから選択する

1 つのテーブルにすべての行がないシナリオでも、複数のテーブルにわたって効果的にクエリを実行するには対応するエントリが別のエントリにある場合、MySQL は外部結合の概念を提供します。カテゴリと製品テーブルを持つオンライン ショップのシナリオを考えてみましょう。

すべてのカテゴリを取得し、それぞれの最小価格と最大価格を計算するとします。ただし、製品のないカテゴリを含め、その最小価格と最大価格を 0 に設定したいと考えています。元のクエリ:

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

LEFT JOIN はカテゴリ (sc) テーブル内のすべての行を保持し、クエリで製品を含まないカテゴリを含むすべてのカテゴリを取得できるようにします。 IFNULL 関数は、null 値 (対応する製品がない場合に発生する) を 0 に設定し、minp と maxp が常に有効な値で返されるようにします。

このアプローチにより、クエリは、カテゴリに関係なく、すべてのカテゴリを取得します。対応する製品があるかどうかを確認し、不足している価格情報には 0 を正しく割り当てます。

以上がMySQL で、製品のないカテゴリも含めて、すべてのカテゴリとその最小/最大製品価格を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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