SQL: Inhalte aus einer Spalte mit den Inhalten aus mehreren Spalten einer zweiten Tabelle vergleichen
Guten Tag
ich habe folgende Fragen
Frage 1:
Tabelle1 , Spalte A in dieser stehen Kürzel
Tabelle2, Spalte A, B, C, D in diesen stehen auch Kürzel
Jetzt will ich wissen:
1. welche Kürzel aus Tabelle 1, Spalte A sind auch in Tabelle2, Spalte A, B, C, D
(das Kürzel aus Tabelle 1, Spalte A, kann in allen Spalten der Tabelle2 A, B, C, D stehen)
bzw.
1. welche Kürzel aus Tabelle 1, Spalte A sind nicht in Tabelle2, Spalte A, B, C, D
Frage 2
Tabelle1 , Spalte A, B in dieser stehen Kürzel
Tabelle2, Spalte A, B, C, D in diesen stehen auch Kürzel
Jetzt will ich wissen:
1. welche Kürzel aus Tabelle 1, Spalte A und B sind auch in Tabelle2, Spalte A, B, C, D
(das Kürzel aus Tabelle 1, Spalte A, kann in allen Spalten der Tabelle2 A, B, C, D stehen)
bzw.
1. welche Kürzel aus Tabelle 1, Spalte A und B sind nicht in Tabelle2, Spalte A, B, C, D
ich hatte es mal so versucht.
... gibt aber ein falsches Ergebnis, da es Spalte für Spalte vergleicht
select tabelle1.kuerzel
from tabelle1
inner join tabelle2 on
tabelle1.kuerzel <> tabelle2.SpalteA
or
tabelle1.kuerzel <> tabelle2.SpalteB
or
tabelle1.kuerzel <> tabelle2.SpalteC
or
tabelle1.kuerzel <> tabelle2.SpalteD
ich habe folgende Fragen
Frage 1:
Tabelle1 , Spalte A in dieser stehen Kürzel
Tabelle2, Spalte A, B, C, D in diesen stehen auch Kürzel
Jetzt will ich wissen:
1. welche Kürzel aus Tabelle 1, Spalte A sind auch in Tabelle2, Spalte A, B, C, D
(das Kürzel aus Tabelle 1, Spalte A, kann in allen Spalten der Tabelle2 A, B, C, D stehen)
bzw.
1. welche Kürzel aus Tabelle 1, Spalte A sind nicht in Tabelle2, Spalte A, B, C, D
Frage 2
Tabelle1 , Spalte A, B in dieser stehen Kürzel
Tabelle2, Spalte A, B, C, D in diesen stehen auch Kürzel
Jetzt will ich wissen:
1. welche Kürzel aus Tabelle 1, Spalte A und B sind auch in Tabelle2, Spalte A, B, C, D
(das Kürzel aus Tabelle 1, Spalte A, kann in allen Spalten der Tabelle2 A, B, C, D stehen)
bzw.
1. welche Kürzel aus Tabelle 1, Spalte A und B sind nicht in Tabelle2, Spalte A, B, C, D
ich hatte es mal so versucht.
... gibt aber ein falsches Ergebnis, da es Spalte für Spalte vergleicht
select tabelle1.kuerzel
from tabelle1
inner join tabelle2 on
tabelle1.kuerzel <> tabelle2.SpalteA
or
tabelle1.kuerzel <> tabelle2.SpalteB
or
tabelle1.kuerzel <> tabelle2.SpalteC
or
tabelle1.kuerzel <> tabelle2.SpalteD
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 324289
Url: https://administrator.de/forum/sql-inhalte-aus-einer-spalte-mit-den-inhalten-aus-mehreren-spalten-einer-zweiten-tabelle-vergleichen-324289.html
Ausgedruckt am: 22.04.2025 um 09:04 Uhr
4 Kommentare
Neuester Kommentar
Die Fragestellung ist nicht eindeutig formuliert.
Gleiches gilt natürlich auch für die Frage, welche NICHT drin sind.
Und zu Frage 2 gilt dasselbe + die Frage ob aus Tabelle1 Spalte A und Spalte B beide gefunden werden müssen und ob die zusammen in einem Datensatz gefunden werden müssen.
Und es steht zwar nicht drin warum und wofür, aber der Fragestellung nach würde ich mal das Lesen des folgenden Wikipedia Artikels empfehlen:
https://de.wikipedia.org/wiki/Referentielle_Integrit%C3%A4t
Mit referentieller Integrität (aka Fremdschlüssel Beziehungen im SQL Slang) kann man nämlich verhindern, das in Tabelle2 Kürzel auftauchen, die es in Tabelle 1 nicht gibt und das man in Tabelle 1 einfach Kürzel löscht, die in Tabelle 2 vorkommen.
Dann muß man nicht solche Prüfabfragen implementieren.
1. welche Kürzel aus Tabelle 1, Spalte A sind auch in Tabelle2, Spalte A, B, C, D
Geht es jetzt darum, das das Kürzel überhaupt mindestens einmal in Spalte A, B, C, D vorkommt und wenn ja genügt es daß es in A oder B oder C oder D vorkommt oder sollte es in jeder Spalte mindestens einmal vorkommen?Gleiches gilt natürlich auch für die Frage, welche NICHT drin sind.
Und zu Frage 2 gilt dasselbe + die Frage ob aus Tabelle1 Spalte A und Spalte B beide gefunden werden müssen und ob die zusammen in einem Datensatz gefunden werden müssen.
Und es steht zwar nicht drin warum und wofür, aber der Fragestellung nach würde ich mal das Lesen des folgenden Wikipedia Artikels empfehlen:
https://de.wikipedia.org/wiki/Referentielle_Integrit%C3%A4t
Mit referentieller Integrität (aka Fremdschlüssel Beziehungen im SQL Slang) kann man nämlich verhindern, das in Tabelle2 Kürzel auftauchen, die es in Tabelle 1 nicht gibt und das man in Tabelle 1 einfach Kürzel löscht, die in Tabelle 2 vorkommen.
Dann muß man nicht solche Prüfabfragen implementieren.
OK, wenn meine Frage unverständlich war, dann belassen wir es dabei.
SQL um rauszubekommen welche Kürzel von Tabelle1 irgendwo in den Spalten A/B/C/D von Tabelle 2 vorkommen:
SQL um rauszubekommen welches Kürzel von Tabelle1 nirgendwo in Spalte A/B/C/D von Tabelle 2 vorkommt:
Geht sicherlich auch schöner, aber tut.
Daraus sollte man auch die Erweiterung für A/B ableiten können, zumindestens wenn A und B unabhängig voneinander betrachtet werden können, aber das war ja eine der Nachfragen von mir.
SQL um rauszubekommen welche Kürzel von Tabelle1 irgendwo in den Spalten A/B/C/D von Tabelle 2 vorkommen:
SELECT DISTINCT tempA.A
FROM (SELECT Tabelle1.A
FROM Tabelle1, Tabelle2
where Tabelle1.A = Tabelle2.A
union
SELECT Tabelle1.A
FROM Tabelle1, Tabelle2
where Tabelle1.A = Tabelle2.B
union
SELECT Tabelle1.A
FROM Tabelle1, Tabelle2
where Tabelle1.A = Tabelle2.C
union
SELECT Tabelle1.A
FROM Tabelle1, Tabelle2
where Tabelle1.A = Tabelle2.D) AS tempA
ORDER BY 1;
Select Tabelle1.A
from
(Select Tabelle2.A as A2 from Tabelle2
Union
Select Tabelle2.B as A2 from Tabelle2
Union
Select Tabelle2.C as A2 from Tabelle2
Union
Select Tabelle2.D as A2 from Tabelle2) as Temp2
Right JOIN Tabelle1
On Tabelle1.A = Temp2.A2
where Temp2.A2 is Null
Daraus sollte man auch die Erweiterung für A/B ableiten können, zumindestens wenn A und B unabhängig voneinander betrachtet werden können, aber das war ja eine der Nachfragen von mir.