Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment sélectionner parmi deux tables dans MySQL même si toutes les lignes d'une table n'ont pas de correspondants dans l'autre?

Pour ce faire, vous avez besoin d'une jointure externe. Soit dit en passant, la façon dont vous écrivez votre requête avec une jointure implicite est obsolète et n'est plus recommandée. L'utilisation du mot-clé JOIN est recommandée. Cela facilite également la transformation d'une jointure interne en jointure externe.

FROM categories AS sc
LEFT JOIN products AS s
ON s.ownerid=sc.id

Pour renvoyer 0 au lieu de NULL, utilisez IFNULL(..., 0) . La requête entière devient :

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

Vous pouvez également envisager s'il serait préférable de renvoyer la valeur par défaut NULL au lieu de 0 pour les catégories qui n'ont pas de produits.