+Mysql : Select * FROM NOT IN (...) - Problem
MichaelR
- php
Hallo,
wenn ich eine Abfrage
SELECT feld
FROM TabelleSowieso
WHERE feld1
NOT IN ('elm1, elm2')
direkt in MyPHPAdmin ausführe erhalte ich genau die Elemente, die in der Tabelle vorhanden sind, aber nicht in der Menge nach IN.
Mache ich das gleiche über eine PHP-Seite, erhalte ich als Result-Wert all diejenigen Elemente, die in der Menge IN stehen???
Warum führt der exakt (!) gleiche Befehl zu zwei unterschiedlichen WErten?
Danke +Grüße
Michael
Moin!
Warum führt der exakt (!) gleiche Befehl zu zwei unterschiedlichen WErten?
Weil der exakt gleiche Befehl vermutlich doch nicht exakt gleich ist.
Mehr kann meine Glaskugel aber im Moment auch nicht raten.
- Sven Rautenberg
Hi,
Warum führt der exakt (!) gleiche Befehl zu zwei unterschiedlichen WErten?
Weil der exakt gleiche Befehl vermutlich doch nicht exakt gleich ist.
Doch. Ich lasse mir die Select Abfrage im PHP Script ausgeben und copy&paste das ganze dann in MyPHPAdmin rein.
So sieht sie aus:
SELECT id
FROM Tabelle\_Q
WHERE id
NOT IN ('id1, id2, id3')
Ideen?
Grüße
Michael
Mehr kann meine Glaskugel aber im Moment auch nicht raten.
Meine ist schon lange kaputt....
hi,
SELECT
id
FROMTabelle\_Q
WHEREid
NOT IN ('id1, id2, id3')
du möchtest also wirklich alle werte selektieren, die nicht ein der menge mit nur dem einern wert 'id1, id2, id3' liegen?
wie viele einträge mit _dem_ wert 'id1, id2, id3' hast du denn so in deiner DB?
gruss,
wahsaga
Hi,
SELECT
id
FROMTabelle\_Q
WHEREid
NOT IN ('id1, id2, id3')
du möchtest also wirklich alle werte selektieren, die nicht ein der menge mit nur dem einern wert 'id1, id2, id3' liegen?
Ähmmm. 'id1, id2, id3' ist ja eine Menge, die bei Ausführung direkt in MyPHPAdmin (oder wie das Dingen genau heißt) zum richtigen Ergebnis führt.
wie viele einträge mit _dem_ wert 'id1, id2, id3' hast du denn so in deiner DB?
Nachdem, was ich bei aktivem Ausführen von MyPHPAdmin gesehen habe und nachdem was ich in verschiedenen Doks gelesen hab, ist das eine richtige Darstellungsform für Mengen.
'id1, id2, id3' ist also nicht _ein_ Element einer Menge, sondern die Menge hat drei Elemente ...
Oder versteh' ich Dich falsch?
Grüße
Michael
gruss,
wahsaga
hi,
Ähmmm. 'id1, id2, id3' ist ja eine Menge, die bei Ausführung direkt in MyPHPAdmin (oder wie das Dingen genau heißt) zum richtigen Ergebnis führt.
das wundert mich aber.
Nachdem, was ich bei aktivem Ausführen von MyPHPAdmin gesehen habe und nachdem was ich in verschiedenen Doks gelesen hab, ist das eine richtige Darstellungsform für Mengen.
'id1, id2, id3' ist also nicht _ein_ Element einer Menge, sondern die Menge hat drei Elemente ...
die beispiele in der mysql-doku unter http://www.mysql.de/doc/de/Comparison_Operators.html verwenden die schreibweise
IN (0,3,5,'wefwf')
deshalb würde ich in deinem fall auch nur
IN ('id1', 'id2', 'id3') //für alphanummerische IDs
bzw.
IN (1, 2, 3) //für nummerische IDs
für logisch halten.
gruss,
wahsaga
Hi,
genau so?
SELECT
id
FROMTabelle\_Q
WHEREid
NOT IN ('id1, id2, id3')
Ich benutze selten Quotes, aber ich hätte die in der IN-Klammer nicht gesetzt:
SELECT id FROM tabelle_q WHERE id NOT IN (id1, id2, id3)
Nächste Frage: Bist du dir sicher, dass das Query auch so ausgeführt wird (Stichwort Variable):
$query = "SELECT id FROM tabelle_q WHERE id NOT IN ($meineids)";
Und dann mal ein
echo $query;
MfG
Rouven
Hallo,
genau so?
SELECT
id
FROMTabelle\_Q
WHEREid
NOT IN ('id1, id2, id3')Ich benutze selten Quotes, aber ich hätte die in der IN-Klammer nicht gesetzt:
SELECT id FROM tabelle_q WHERE id NOT IN (id1, id2, id3)Nächste Frage: Bist du dir sicher, dass das Query auch so ausgeführt wird (Stichwort Variable):
$query = "SELECT id FROM tabelle_q WHERE id NOT IN ($meineids)";
Und dann mal ein
echo $query;
Ja, es wird richtig ausgegeben; um die obige Select Sache kommt im PHP-Script
$sql = "...";
Die Einfach-Quotes in der Menge von IN müssen sein, zumindest nach dem was MySql so will...
Noch Ideen?
Grüße,
Michael