sql >> Database >  >> RDS >> Mysql

Hoe te kiezen uit twee tabellen in MySQL, zelfs als niet alle rijen in de ene tabel correspondenten hebben in de andere?

Hiervoor heb je een outer join nodig. Trouwens, de manier waarop je je vraag schrijft met een impliciete join is verouderd en wordt niet langer aanbevolen. Het gebruik van het JOIN-sleutelwoord wordt aanbevolen. Dit maakt het ook makkelijker om een ​​inner join te veranderen in een outer join.

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

Om 0 te retourneren in plaats van NULL, gebruikt u IFNULL(..., 0) . De hele zoekopdracht wordt:

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

U kunt ook overwegen of het beter is om de standaard NULL terug te geven in plaats van 0 voor categorieën die geen producten hebben.



  1. Uren aftrekken van een datetime-waarde in MariaDB

  2. Een tijdelijke oplossing voor:Cursors worden niet ondersteund in een tabel met een geclusterde columnstore-index

  3. Hulp nodig bij berekening met behulp van twee datasets met Expression SSRS

  4. ORA-03113:einde bestand op communicatiekanaal