Left Join: Rechte Tabelle hat Daten?
-
Hallo Forum,
ich möchte den Inhalt von Tabelle A anzeigen. Zusätzlich soll in einer Spalte angezeigt werden ob in Tabelle B Einträge zu A vorhanden sind. Das würde man mit einem Left Join machen. Datenbank MS SQL 2012
Select A.*, B.Key FROM A LEFT JOIN B ...
Im Moment steht in der Spalte B.Key null oder der Key. Dort soll jedoch Ja oder Nein angezeigt werden, je nachdem ob in Tabelle B Daten sind oder nicht. Kann ich in der Spaltenliste zw SELECT und WHERE keine Auswertungen machen? zB.
Select A.*, (B.Key IS NOT NULL) FROM A LEFT JOIN B ...Alternativ:
Select A.*, COUNT(B.Key) FROM A LEFT JOIN B ... GROUP BY ...Hier ist jedoch das Problem das in der Group By Klausel alle Spalten von Tabelle A aufgelistet werden müssen und diese sind vom Typ ntext. Fehlermeldung:
Die Datentypen 'text', 'ntext' und 'image' können nur mithilfe des Operators IS NULL oder LIKE verglichen oder sortiert werden.
Habt ihr einen schnellen Tip?
Vielen Dank
Peter
-
Argh, man kann SQL auch schachteln. Also:
Select A.,
(SELECT COUNT() FROM B WHERE...)
FROM A WHERE ...Jetzt steht da 0 oder 1, je nachdem ob da Zeilen gefunden wurde. Kann ich das irgendwie in Ja/Nein umbauen?
-
Hilft dir CASE bzw. COALESCE weiter?
-
Case hat mir weitergeholfen. Vielen Dank
SELECT A.*, 'Ist in B' = CASE (SELECT count(*) FROM B WHERE...) WHEN '0' THEN 'nicht vorhanden' WHEN '1' THEN 'vorhanden' ELSE 'Problem' END FROM A