# Datensätze aus tabelle A welche nicht in tabelle B sind anzeigen



## JohannesProgrammiert (21. April 2004)

Hi

Ich habe irgendwie keine Ahnung, wie ich alle Datensätze, die in Tabelle A jedoch nicht in Tabelle B sind ausgeben lassen kann (Zu Identifizieren ist nur der Schlüssel, welcher bei beiden übereinstimmen muss)

folgendes habe ich getestet: (ANSI SQL)

SELECT a.feld1 FROM tabelle1 a, tabelle2 b WHERE a.feld1 <> b.feld1

klingt logisch, dass das nich klappt  also  habe ich das hier probiert:

SELECT a.feld1 FROM tabelle1 a LEFT JOIN tabelle2 b ON a.feld1 <> b.feld1

klappt nicht, Rückgabe ist Menge Datensätze a*b

SELECT a.feld FROM tabelle 1 a LEFT JOIN tabelle 2 b ON a.feld1 <> b.feld1 GROUP BY a.feld1

klappt nicht, Rückgabe sind alle Datensätze (ist ja auch logisch gelle)

mit Subselects habe ich auch schon rumgespielt, aber bin noch zu keinem Ergebniss gekommen, kann mir jemand bei meinem problem helfen ? ich bin hier bald am  verzweifeln und muss das Programm bis morgen unbedingt fertig haben. Ich hoffe auf Antwort.

so far, johannes


----------



## Luzie (21. April 2004)

Hi

hast Du es mal so probiert?

select id from a where id not in (select id from b)


----------



## Patrick Kamin (22. April 2004)

*-*


```
select  distinct tabelle1.* from tabelle1, tabelle2 where tabelle1.field1 <> tabelle2.field1;
```


----------



## kid_a (19. Mai 2004)

*Funktioniert nicht*

Hallo!

Ich glaube mein Problem ist das gleiche.

Versuche gerade die prim. ID einer Tabelle, die mit einer entsprechenden Spalte einer anderen Tabelle verknüpft ist zu vergleichen.

Ich habe die beiden Lösungsvorschläge versucht.

Der erste (select Feld from a where feld not in (select feld2 from b) liefert entweder alle Einträge der Tabelle a oder keine, je nachdem wie die Verknüpfung eingestellt ist.

Der zweite (select distinct...) liefert leider gar nichts, da ein exists zu fehlen scheint, ich das aber nicht sinnvoll eingebaut bekomme.

Übrigens: Sollte die Frage hier genadelos dämlich sein... Ich kam gerade erst über eine Access-Schulung zum Thema und versuche mich nun in die Logik der Access-DB Programmierung zu denken. Gleichzeitig versuche ich das zu hause mit PHP und Postgresql...


----------



## Movera (19. Mai 2004)

Hallo,

ist ganz einfach:

SELECT a.feld1 
FROM tabelle1 a
where not exists(
select 'X'
from tabelle2 b 
WHERE a.feld1 = b.feld1)


----------



## kid_a (19. Mai 2004)

*geschafft!*

 
Danke!

Ging dann doch mit dem ersten. Ich musste nur erst mal verstehen, dass das letzte was ich für sowas brauchen kann die Entwurfsansicht in Access ist.

Da hilft nur direktes SQL-Schreiben. Und dann gings auch.

Sieht jetzt so aus:

SELECT Handys.Handynummer
FROM Handys
WHERE (((Handys.Handynummer) Not In (select NutzungHandy.Handynummer from Nutzunghandy)));

und verrät mir welche Handys derzeit frei sind. 

Merci

und auch gleich der nächste Haken...
Ich wollte diese Abfrage im jit beim nächsten Nutzungsvorgang zu prüfen, welches Handy gerade frei ist und so zu vermeiden, dass ein Handy doppelt eingetragen wird. Nur... Wenn ich nun Handynummer.NutzungHandy mit dem Nachschlagassistent auf die o.g. Abfrage verknüpfe gibt es eine Verknüpfung auf die gerade bearbeitete Tabelle. Das mag ern icht und dementsprechend gehts auch nicht.
Ich knobbele ein wenig und poste hier für interessierte meinen Lösungsansatz. Ich vermute weiterhin, dass ich mit einer effizienteren Tabellenstruktur dieses Problem nicht hätte.


----------

