MySQL: Verknüpfungsproblem
Moin!
Ich habe hier wieder ein Problem, was ich mittels PHP nicht lösen konnte, ich mir aber denke, daß es mittels MySQL möglich ist (welch ein Satzbau *g*).
Und zwar, habe ich hier in einer Datenbank zwei Tabellen, die mit einem PHP-Skript sozusagen "synchronisiert" werden. Das heißt, in der einen Tabelle erscheinen stetig neue Datensätze, die in der anderen Tabelle gefiltert nachher ebenfalls geschrieben werden sollen. Bisher war das eine einfache Select-Abfrage, die einfach alle Datensätze aus der einen herausholt und über PHP gefiltert und anschließlich in die andere Tabelle geschrieben wird. Da das ja doch ziemlich viele Datensätze sind (über 2000), möchte ich das gern über MySQL direkt lösen. Mein Versuch aber schlug bisher fehl bzw. übergab mir ein Ergebnis mit über 5 Millionen (!) Einträgen:
Diese Abfrage sollte eine Tabelle erstellen, die die Rechnungsnummern aus adr_kunden enthält, die in adr_ups noch nicht enthalten sind. Da beide Tabellen im Moment "synchron" sind (da Kopien), erwarte ich hierbei eigentlich ein leeres Ergebnis.
Was ist falsch an meiner Abfrage?
Ich habe hier wieder ein Problem, was ich mittels PHP nicht lösen konnte, ich mir aber denke, daß es mittels MySQL möglich ist (welch ein Satzbau *g*).
Und zwar, habe ich hier in einer Datenbank zwei Tabellen, die mit einem PHP-Skript sozusagen "synchronisiert" werden. Das heißt, in der einen Tabelle erscheinen stetig neue Datensätze, die in der anderen Tabelle gefiltert nachher ebenfalls geschrieben werden sollen. Bisher war das eine einfache Select-Abfrage, die einfach alle Datensätze aus der einen herausholt und über PHP gefiltert und anschließlich in die andere Tabelle geschrieben wird. Da das ja doch ziemlich viele Datensätze sind (über 2000), möchte ich das gern über MySQL direkt lösen. Mein Versuch aber schlug bisher fehl bzw. übergab mir ein Ergebnis mit über 5 Millionen (!) Einträgen:
|
|
Quellcode |
1 2 3 |
SELECT adr_kunden.Rechnungsnummer FROM adr_ups, adr_kunden WHERE adr_ups.Rechnungsnummer <> adr_kunden.Rechnungsnummer |
Diese Abfrage sollte eine Tabelle erstellen, die die Rechnungsnummern aus adr_kunden enthält, die in adr_ups noch nicht enthalten sind. Da beide Tabellen im Moment "synchron" sind (da Kopien), erwarte ich hierbei eigentlich ein leeres Ergebnis.
Was ist falsch an meiner Abfrage?
Why should someone who sees
Follow the blind ones...?
Project Pitchfork - IO
Follow the blind ones...?
Project Pitchfork - IO
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Metalmorphosis« (16. Mai 2006, 12:40)
RE: MySQL: Verknüpfungsproblem
probier es mal mit != anstatt <>, damit funktioniert ein derartiger vergleich normalerweise.
mfg
onkeljürgen
mfg
onkeljürgen
Auf jede Frage gibt es eine Antwort, man muss nur lange genug danach suchen.
z.B. auf www.netscripter.de :-P
Zitat
Original von Metalmorphosis
Diesen Operator hatte ich zuerst auch drin, brachte mir aber das gleiche falsche Ergebnis (5 Millionen Einträge).
wie wärs mit = oder hab ich da nen denkfehler, denn die rechnungsnummer sollte ja vermutlich gleich und nicht ungleich sein
~!__/
..o.o
This is Einkaufswagen.
Copy Einkaufswagen into your signature to help him on his way to world domination.
Zitat
Original von Skittles
Zitat
Original von Metalmorphosis
Diesen Operator hatte ich zuerst auch drin, brachte mir aber das gleiche falsche Ergebnis (5 Millionen Einträge).
wie wärs mit = oder hab ich da nen denkfehler, denn die rechnungsnummer sollte ja vermutlich gleich und nicht ungleich sein
Doch, die sollte ungleich sein, da ja die Rechnungsnummern zurückgegeben werden sollen, die noch nicht in adr_ups enthalten sind.
Ich hab jetzt nochmal die Datentypen der beiden Felder überprüft, um diesen Fehler auszuschließen. Diese sind in beiden Tabellen identisch.
Why should someone who sees
Follow the blind ones...?
Project Pitchfork - IO
Follow the blind ones...?
Project Pitchfork - IO
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Metalmorphosis« (16. Mai 2006, 14:34)
das bringt nix, das problem ist, dass der ","-operator dir das karthesische produkt der tabellen gibt, also jede zeile der einen mit jeder der anderen. versuch mal lieber folgende Abfrage:
|
|
Quellcode |
1 |
SELECT adr_kunden.Rechnungsnummer FROM adr_kunden LEFT JOIN adr_ups ON adr_kunden.Rechnungsnummer=adr_ups.Rechnungsnummer WHERE adr_ups.Rechnungsnummer IS NULL; |
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Qjuh« (1. August 2006, 17:54)


