Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie kann man in MySQL aus zwei Tabellen auswählen, auch wenn nicht alle Zeilen in einer Tabelle Korrespondenten in der anderen haben?

Dazu benötigen Sie einen Outer Join. Übrigens ist die Art und Weise, wie Sie Ihre Abfrage mit einem impliziten Join schreiben, veraltet und wird nicht mehr empfohlen. Es wird empfohlen, das Schlüsselwort JOIN zu verwenden. Dies macht es auch einfacher, einen inneren Join in einen äußeren Join umzuwandeln.

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

Um 0 statt NULL zurückzugeben, verwenden Sie IFNULL(..., 0) . Die gesamte Abfrage wird zu:

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

Sie sollten auch überlegen, ob es besser wäre, den Standard NULL statt 0 für Kategorien zurückzugeben, die keine Produkte haben.