Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como selecionar entre duas tabelas no MySQL, mesmo que nem todas as linhas de uma tabela tenham correspondentes na outra?


Para fazer isso, você precisa de uma junção externa. A propósito, a maneira como você está escrevendo sua consulta com uma junção implícita está desatualizada e não é mais recomendada. O uso da palavra-chave JOIN é recomendado. Isso também facilita a alteração de uma junção interna para uma junção externa.
FROM categories AS sc
LEFT JOIN products AS s
ON s.ownerid=sc.id

Para retornar 0 em vez de NULL, use IFNULL(..., 0) . A consulta inteira se torna:
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

Você também pode considerar se seria melhor retornar o NULL padrão em vez de 0 para categorias que não possuem produtos.