sqlbeginner
Goto Top

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

Content-Key: 324289

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

Printed on: April 24, 2024 at 03:04 o'clock

Member: AndreasHoster
Solution AndreasHoster Dec 19, 2016 at 16:17:02 (UTC)
Goto Top
Die Fragestellung ist nicht eindeutig formuliert.
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.
Member: sqlbeginner
sqlbeginner Dec 19, 2016 at 16:30:30 (UTC)
Goto Top
Das ist ja exakt das Problem, ich will wissen welche Kürzel aus Tabelle 1 und Spalte 1
stehen in Tabelle2 Spalten A, B, C oder D, bzw. welche nicht aus Tabelle 1 und Spalte 1.

Die Frage 2 bezeiht sich auf den gleichen Sachverhalt, nur das ich Tabelle1 eine Spalte 1 und Spalte 2 habe
und in abelle2 Spalten A, B, C oder D
Member: AndreasHoster
Solution AndreasHoster Dec 19, 2016 at 16:53:21 (UTC)
Goto Top
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:
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;
SQL um rauszubekommen welches Kürzel von Tabelle1 nirgendwo in Spalte A/B/C/D von Tabelle 2 vorkommt:
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
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.
Member: sqlbeginner
sqlbeginner Dec 19, 2016 at 22:36:20 (UTC)
Goto Top
Besten Dank