MySQL IF NOT NULL, dann Anzeige 1, sonst Anzeige 0

I'm arbeiten mit einer kleinen Anzeige Komplikation hier. Ich bin mir sicher, dass es eine IF/ELSE-Funktion gibt, die ich gerade übersehe.

Ich habe 2 Tabellen, die ich abfrage (Kunden, Adressen). Die erste hat den Hauptdatensatz, aber die zweite kann einen Datensatz haben oder auch nicht, mit dem sie LINKS VERBINDET werden kann.

Ich möchte eine Null anzeigen, wenn es keinen Datensatz in der Tabelle "Adressen" gibt. Und ich möchte nur 1 anzeigen, wenn ein Datensatz vorhanden ist.

Was ich bis jetzt versucht habe:

SELECT c.name, COALESCE(a.addressid,0) AS addressexists
FROM customers c
LEFT JOIN addresses a ON c.customerid = a.customerid
WHERE customerid = 123

Dieses erste Beispiel bringt es nicht. Aber vielleicht verwende ich COALESCE falsch.

Wie kann ich eine 0 anzeigen, wenn null, und eine 1, wenn etwas existiert?

Lösung

Anstelle von COALESCE(a.addressid,0) AS addressexists ist CASE zu verwenden:

CASE WHEN a.addressid IS NOT NULL 
       THEN 1
       ELSE 0
END AS addressexists

oder das einfachere:

(a.addressid IS NOT NULL) AS addressexists

Das funktioniert, weil TRUE in MySQL als 1 angezeigt wird und FALSE als 0.

Kommentare (0)
SELECT c.name, IF(a.addressid IS NULL,0,1) AS addressexists
FROM customers c
LEFT JOIN addresses a ON c.customerid = a.customerid
WHERE customerid = 123
Kommentare (0)
SELECT 
    c.name, 
    CASE WHEN a.addressid IS NULL THEN 0 ELSE 1 END AS addressexists
FROM customers c
LEFT JOIN addresses a ON c.customerid = a.customerid
WHERE customerid = 123
Kommentare (0)