MySQL: NULL ois 0 ausgeben
Für a klans Projekt hob i die Werte von ana Spoitn in MySQL summieren und nach de summierten Werte sortieren miassn. So wos wia
SELECT ITEMS.id, SUM(VOTES.modificator) AS score
FROM items ITEMS
LEFT JOIN votes VOTES ON ITEMS.id = VOTES.item
GROUP BY ITEMS.id
ORDER BY score DESC
Oba: Oh Scheiße. Wenn in da Votes-Tabelln koa zum verknüpfender Eintrag do is, kriagn ma ois Ergebnis für de arithmetische Funktion "null" zruck. Mia wolln jo oba nach dem Ergebnis von da arithmetischen Funktion sortieren. Und wöchan Wert hot Null? - In meinem Foi tatsächlich 0. Also ersetzn ma Null mit 0 - und zwoar so:
SELECT ITEMS.id, COALESCE(SUM(VOTES.modificator), 0) AS score
FROM items ITEMS
LEFT JOIN votes VOTES ON ITEMS.id = VOTES.item
GROUP BY ITEMS.id
ORDER BY score DESC
Wos mocht COALESCE genau? Auf jeden Foi mehr ois stumpfsinniges "umwandeln", du Tschapperl. COALESCE gibt uns aus ana beliebigen Anzoi an Parametern genau den zruck, der als erster an Wert enthoit (also ned null is).
COALESCE(NULL, NULL, 'Hallo', NULL, 'Elefant')
gibt also "Hallo" zruck.
In unserem Foi gibt COALESCE also die Summe aus VOTES.modificator zruck, es sei denn, da "Wert" (bewusst in Anführungszeichen, weil NULL jo grod KAN Wert is) drin is Null. Dann kriagn ma 0 zruckgebn und ersetzn so faktisch des Ergebnis von da arithmetischen Funktion.