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?
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
.
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
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