sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo seleccionar de dos tablas en MySQL incluso si no todas las filas en una tabla tienen corresponsales en la otra?

Para hacer esto, necesita una combinación externa. Por cierto, la forma en que está escribiendo su consulta con una combinación implícita está desactualizada y ya no se recomienda. Se recomienda utilizar la palabra clave JOIN. Esto también facilita el cambio de una unión interna a una unión externa.

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

Para devolver 0 en lugar de NULL use IFNULL(..., 0) . La consulta completa se convierte en:

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

También puede considerar si sería mejor devolver el NULL predeterminado en lugar de 0 para las categorías que no tienen productos.