MySql ID ausschließen

Trikor

Grünschnabel
Hi @all,

ich habe folgendes Problem:
Ich möchte alle Werte der Tabelle A abfragen jedoch Einträge auslassen, wenn ID_A
in TABELLE B vorhanden ist.

TABELLE A
ID_A
Name
Strasse
...

TABELLE B
ID_B
ID_A
Beruf
...

Ich habs so versucht
Select * from A LEFT JOIN B On (B.ID_A != A.ID_A) WHERE
A.Datum > '2004-01-01'

Ich bekomme aber trotzdem auch die Einträge, aus A angezeigt dessen ID_A in B vorhanden sind.
Was mach ich falsch?
 
Du brauchst die Tabellen garnicht mal zu Joinen.

Code:
SELECT  * 
FROM  A, B
WHERE A.ID_A != B.ID_A

So werden alle die Datensätze ausgelesen, die nicht die ID_A auch in B vorhanden haben. Eigentlich ganz einfach...
Hoffe das beantwortet die Frage. ;)

MfG
Bastian
 
Das war übrigens mein erster versuch.
klapp aber leider nicht. Vieleicht habe ich micht auch falsch ausgedrückt.
Ich versuchs mal anders.

Tabelle A
ID_A ---------Name
1 ------------Thomas
2 ----------- Frank
3 ------------Michael

Tabelle B
ID_B --------- ID_A
1 ---------------- 2

Jetzt soll bei der Abfrage ID_A (1 und 3) ausgegeben werden ID_A (2) nicht, da in Tabelle B vorhanden.
 
Dann mach halt

Code:
SELECT tab1.ID_A, tab1.Name
FROM A tab1, B tab2
WHERE tab1.ID_A != tab2.ID_B;
Habs net versucht, denke aber das kommt eher mit dem überein, was du willst.


MfG Radhad
 
No way,

aber wieso sollte das auch funktionieren?

ich will ja schließlich die Datensätze ausschließen, deren ID_A in tabelle B vorhanden ist.
ich könnte in einer for-Schleife jede einzelne ID_A abfangen und mit einer zweiten SQL-Abfrage prüfen, ob ID_A in Tabelle B vorhanden ist. Allerdings dürfte das viel länger dauern und es muß doch auch anders gehen.
 
Hmmm, ich habe mal genau die Tabellen angelegt die du oben gepostet hast, und dann meine Abfrage ausgeführt, kommt genau das raus was du haben willst.
Das einzige was du ändern müsstest ist die Selektion, in deinem Fall glaube ich SELECT a.*

Und das von Radhad ist genau das selbe wie meins oben, nur den Tabellen andere Namen gegeben und das Selektieren gleich auf die nötigen Daten beschränkt.

Also klappt alles wunderbar...
Bastian
 
Zuletzt bearbeitet:
Das ist merkwürdig, bei mir funktioniert es leider nicht :-(

Meine Datenbank hat zwar einen anderen Namen und auch andere Felder, aber das Problem ist eigentlich das gleiche.
Aus Tabelle A rufe ich die abzufragenden Felder auch einzelnt auf sprich
SELECT Distinct A.ID_Adresse, A.Name, A.Strasse, A.Ort FROM Adresse AS A, Beruf AS B WHERE A.ID_Adresse != 'B.ID_Adresse'

Trotzdem bekomme ich A.ID_Adresse nummer 3 angezeigt, obwohl Sie definitiv in Tabelle Beruf steht.
 
So, ich hab die Lösung gefunden.

War ziemlich nah an melmager jedoch am ende ein IS statt =

select * from a,b on a.id_a=b.id_a where b.id.b IS null

Danke an alle, die geholfen haben ;-)
 

Neue Beiträge

Zurück