maffi
Goto Top

INNER JOIN Frage (MSSQL)

Hallo zusammen,

ich habe eine SQL-Problemstellung, die wie folgt aussieht:

Ich habe zwei Tabellen
1. Container
2. ContainerAktivitaeten

beide besitzen eine Spalte CONNR vom Typ varchar(30) null
die Tabelle ContainerAktivitaeten unter anderem eine Spalte aktivitaet varchar(200) null

Ich versuche nun nur Container anzuzeigen, die verknüpft über die CONNR nicht die Aktivität "Aufgestellt" haben und für die keine Aktivität erstellt wurde.

Hier ist mein SQL Befehl:

SELECT table1.CONNR, table1.typ, table1.volumen From Container AS table1
INNER JOIN ContainerAktivitaeten AS table2
ON table1.CONNR=table2.CONNR
WHERE table2.aktivitaet NOT LIKE '%Aufgestellt%';

In der Tabelle ContainerAktivitaeten befinden sich zwei Datensätze mit jeweils aktivitaet='Aufgestellt' und jeweils einer eindeutigen
CONNR, die auch in der Container Tabelle vorhanden sind. in der Container Tabelle befinden sich fünf Datensätze.
Jede Container ID: CONNR ist eindeutig in der Container Tabelle.

Ich bekomme kein Resultset zurück. Ich vermute es liegt dadran, dass die Container ohne Aktivität nicht behandelt werden.

Wie muss ich den Befehl entsprechend umbauen?

Content-ID: 619395

Url: https://administrator.de/contentid/619395

Ausgedruckt am: 22.11.2024 um 10:11 Uhr

SlainteMhath
Lösung SlainteMhath 05.11.2020 um 12:16:21 Uhr
Goto Top
Moin,

was soll dabei rauskommen, wenn du festlesgst
ContainerAktivitaeten befinden sich zwei Datensätze mit jeweils aktivitaet='Aufgestellt
und dann abfragst
table2.aktivitaet NOT LIKE '%Aufgestellt%';
?

lg,
Slainte
Maffi
Maffi 05.11.2020 um 12:28:15 Uhr
Goto Top
Ich möchte damit erreichen, dass alle Container angezeigt werden, für die keine Aktivitaet existiert und explizit keinen Container anzeigen, für den die Aktivität 'Aufgestellt' in der ContainerAktivitaten Tabelle exisitiert. Mir ist klar, dass ich dadurch bereits die Container ausschließe, die in dem aktivitaet string das Wort 'Aufgestellt' enthalten. Dadurch das Resultset ohne Ergebnisse, da zwei Datensätze eben diese Aktivität haben. Nur möchte ich auch Container anzeigen, die keinen Datensatz also keine Verknüpfung über die CONNR in der ContainerAktivitaeten Tabelle haben.
SlainteMhath
Lösung SlainteMhath 05.11.2020 um 12:46:11 Uhr
Goto Top
Nur möchte ich auch Container anzeigen, die keinen Datensatz also keine Verknüpfung über die CONNR in der ContainerAktivitaeten Tabelle haben.
Hm, das hört sich nach OUTER JOIN an...
Maffi
Maffi 05.11.2020 um 12:48:49 Uhr
Goto Top
ok gelöst:

SELECT table1.CONNR, table1.typ, table1.volumen From Container AS table1
LEFT JOIN ContainerAktivitaeten AS table2
ON table1.CONNR=table2.CONNR
WHERE table2.aktivitaet NOT LIKE '%Aufgestellt%' OR table2.CONNR is null;
---------------------------------------------