Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Wie mach ich diese MySQL Abfrage richtig?





Frage

Gern würde ich diese Abfrage erzeugen: $res = mysql_query("SELECT A,B FROM Tabelle1, Tabelle2 WHERE NOT A = B"); Also im Prinzip soll mir der Computer sagen, welche Daten von A eben NICHT in B enthalten sind. Leider kennt offenbar MySQL den Befehl WHERE NOT nicht. Weiß jemand wie man das richtig macht? Claudia Gauss aus Wien

Antwort 1 von DukeNT

Hi Claudia,
Bin zwar nicht so der Held in SQL aber hast du es schon mal mit ".....WHERE A <> B" versucht?

Antwort 2 von bored

... öhm...
SELECT A,B FROM Tabelle1, Tabelle2 WHERE A != B


Aber was soll diese Abfrage???

Beispiel:
Tab1 enthält 10 Datensätze, Tab2 ebenfalls. Wenn du jetzt diese Abfrage machst, erhälst du schlimmstenfalls 100 Zeilen ausgegeben, nämlich wenn A und B niemals gleich sind.
Selbst wenn es zu jedem Datensatz aus Tab1 genau einen dazu passenden Datensatz in Tab2 gibt, dann bekommst du immer noch 90 angezeigte Ergebnisse.

Kleines Beispiel:

Tab1
feld A   feld C
1        2
2        4
3        6


Tab2
feld B   feld D
1       9
2       6
3       1


Ergebnis aus deiner Abfrage:
feld A   feld B
1       2
1       3
2       1
2       3
3       1
3       2


Also, was bringt dir das?

Antwort 3 von ClaudiaGauss

Mir ist zum heulen, Keiner versteht mich :-(
Ich habe eine Tabelle mit 3000 Namen und ich will eine Abfrage um DIE zu finden die noch nicht in MEINER Tabelle enthalten sind.

Wie muss ich den da vorgehen?
Biitte helf mir. :-(
Ich hab auch schon != und <> probiert.
Nix funktioniert.
Gibt da den keine Lösung?

Antwort 4 von draack

Hi,

das sollte sein, was du suchst:

SELECT Tabelle1.A
FROM Tabelle1
LEFT JOIN Tabelle2 ON Tabelle1.A=Tabelle2.B
WHERE Tabelle2.B IS NULL;


Tschö,
Volker

Antwort 5 von draack

Hi,

das ganze mit einer Subquery. Das ist vielleicht leichter zu lesen und zu verstehen als die obige Lösung - dafür dürfte die Lösung über einen JOIN deutlich performanter sein (und wird auch von allen MySQL Versionen unterstützt):

SELECT DISTINCT Tabelle1.A
FROM Tabelle1, Tabelle2
WHERE Tabelle1.A NOT IN (SELECT Tabelle2.B FROM Tabelle2);


Tschö,
Volker

P.S.: Diese Lösung ist "suboptimal" - nicht verwenden. So programmiert nur jemand mit SQL, der wenig Ahnung von SQL hat.


Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: