Hallo, ich habe folgendes Problem (sehr vereinfacht):
Tabelle 'test':
id | subid | bedingung
-------------------------------
10 | 1 | ab
10| 2 | 1
20| 1 | cd
20 | 2 | ef
20 | 3 | 2
30 | 1 | 1
Jetzt möchte ich alle id,subid (ergibt zusammen den Primärschlüssel) von den Datensätzen wo die Datensätze ungleich "1" sind.
Die gesuchte Ergebnismenge ist also:
id | subid
---------
10 | 1
20| 1
20 | 2
20 | 3
Da das Beispiel stark vereinfacht ist, habe ich hier bereits das Feld "bedingung" für jeden Datensatz beispielhaft ausgefüllt. Im Realbeispiel muss ich allerdings mehrere Tabellen auswerten um auf die Bedingung zu gelangen. Von daher kommt folgende Abfrage nicht in Frage (!!):
Da ich über einen komplizierten Abfragemarathon nur auswerten kann ob 'bedingung = 1', ist es mir möglich die Anfrage (für das Beispiel vereinfacht) zustellen:
Rein vom Logischen müsste ich jetzt nur die Abfrage:
stellen. Allerdings liefert diese mir zu viele Ergebnisse zurück!
Ich denke das Problem liegt daran das 'id' und 'subid' verglichen werden müssen und da was schief geht. Ich habe in vielen SQL Referenzen immer nur das Beispiel:
gefunden. Wenn nur ein Wert verglichen wird, klappt es ohne Probleme.
Vielleicht gehe ich aber falsch an die Sache ran. Eventuell gibt es einen JOIN oder eine andere Klausel die eine Teilmenge aus der Gesamtmenge "herausschneidet".
Ich hoffe das war jetzt nicht zu unverständlich Ich warte auf Rat.
Grüße
User
Tabelle 'test':
id | subid | bedingung
-------------------------------
10 | 1 | ab
10| 2 | 1
20| 1 | cd
20 | 2 | ef
20 | 3 | 2
30 | 1 | 1
Jetzt möchte ich alle id,subid (ergibt zusammen den Primärschlüssel) von den Datensätzen wo die Datensätze ungleich "1" sind.
Die gesuchte Ergebnismenge ist also:
id | subid
---------
10 | 1
20| 1
20 | 2
20 | 3
Da das Beispiel stark vereinfacht ist, habe ich hier bereits das Feld "bedingung" für jeden Datensatz beispielhaft ausgefüllt. Im Realbeispiel muss ich allerdings mehrere Tabellen auswerten um auf die Bedingung zu gelangen. Von daher kommt folgende Abfrage nicht in Frage (!!):
Code:
SELECT id,subid FROM test WHERE bedingung != 1;
Da ich über einen komplizierten Abfragemarathon nur auswerten kann ob 'bedingung = 1', ist es mir möglich die Anfrage (für das Beispiel vereinfacht) zustellen:
Code:
SELECT id,subid FROM test WHERE bedingung = 1;
Rein vom Logischen müsste ich jetzt nur die Abfrage:
Code:
SELECT id,subid FROM test WHERE (id,subid) NOT IN (SELECT id,subid FROM test WHERE bedingung = 1) ;
Ich denke das Problem liegt daran das 'id' und 'subid' verglichen werden müssen und da was schief geht. Ich habe in vielen SQL Referenzen immer nur das Beispiel:
Code:
... WHERE (id) NOT IN (SELECT id FROM ...) ;
Vielleicht gehe ich aber falsch an die Sache ran. Eventuell gibt es einen JOIN oder eine andere Klausel die eine Teilmenge aus der Gesamtmenge "herausschneidet".
Ich hoffe das war jetzt nicht zu unverständlich Ich warte auf Rat.
Grüße
User