Maison > base de données > tutoriel mysql > Comment récupérer toutes les catégories et leurs prix minimum/maximum dans MySQL, même lorsque certaines catégories n'ont aucun produit ?

Comment récupérer toutes les catégories et leurs prix minimum/maximum dans MySQL, même lorsque certaines catégories n'ont aucun produit ?

Linda Hamilton
Libérer: 2024-12-04 16:25:16
original
679 Les gens l'ont consulté

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

Sélection parmi deux tables avec des lignes inégales dans MySQL

Dans une base de données d'achats en ligne avec deux tables - catégories et produits - une tâche courante est pour récupérer toutes les catégories ainsi que les prix minimum et maximum des produits dans chaque catégorie. Cependant, une requête simple rencontre un problème : les catégories sans produits sont exclues des résultats.

Pour relever ce défi, il est nécessaire d'utiliser une jointure externe au lieu d'une jointure implicite. Une jointure externe permet de récupérer les lignes d'une table (dans ce cas, les catégories) même s'il n'y a pas de lignes correspondantes dans l'autre table (produits). Plus précisément, une jointure gauche est utilisée ici, afin que toutes les catégories soient incluses dans les résultats.

De plus, pour remplacer les valeurs nulles par 0 pour les catégories sans produits, la fonction IFNULL() est utilisée. Cette fonction prend la valeur de l'expression fournie dans le premier argument, et si elle est nulle, renvoie à la place la valeur spécifiée dans le deuxième argument.

La syntaxe de requête mise à jour est la suivante :

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
Copier après la connexion

En utilisant une jointure externe et la fonction IFNULL(), nous pouvons récupérer toutes les catégories et garantir que les catégories sans produits sont représentées avec des valeurs minp et maxp de 0. Cette requête gère efficacement la nécessité de sélectionner parmi deux tables même lorsque toutes les lignes d'une table n'ont pas d'entrées correspondantes dans l'autre.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal