Don Stefano
Erfahrenes Mitglied
Hallo zusammen,
ich habe ein seltsames Problem mit einer MySql Abfrage.
Die folgende Query stammt von einer Programmiererin, mit der ich zusammen arbeite. Sie funktioniert einwandfrei auf ihrem Entwicklungssystem, nicht aber auf meinem (XAMP) oder auf dem Server.
Das Problem liegt darin, dass bei ihr mit dieser Abfrage korrekterweise 2 Datensätze (Felder) ausgelesen werden (diese haben die text_id 1 und 2). Bei mir und auf dem Server wird hingegen KEIN Datensatz ausgelesen (obwohl eigentlich 2 vorhanden sind, die ausgelesen werden sollten).
Die Programmiererin verwendet MySQL-Version: 5.0.15 + Bug #13783
Ich verwende MySql 4.1.10 und der Server 4.1.11.
Ich habe durch ausprobieren mit PHP-MyAdmin herausbekommen, dass das Problem an dem NOT bzw. an dem AND NOT liegt.
Unterstützen diese älteren Versionen die Kombination der Operatoren (AND NOT) nicht? Wie kann man es dann anders ausdrücken, so dass es funktioniert (und zwar mit verschiedenen MySql-Versionen)?
Ich kann mir nun zwar in diesem Fall behelfen indem ich anstatt
folgendes schreibe:
Aber wenn es nun noch ID´s gäbe, die größer wären als 3 käme ich ja mit dieser Lösung auch nicht weiter (oder wenn ich mehrere Datensätze ausschließen möchte als nur "text_reihenfolge=3").
Wäre dann folgende Möglichkeit mit "!=" SQL kompatibler?
Und wer kann mir sagen, was dieses ASC am Ende bewirkt?
ich habe ein seltsames Problem mit einer MySql Abfrage.
Die folgende Query stammt von einer Programmiererin, mit der ich zusammen arbeite. Sie funktioniert einwandfrei auf ihrem Entwicklungssystem, nicht aber auf meinem (XAMP) oder auf dem Server.
PHP:
sql=mysql_query("SELECT * FROM tabelle WHERE
text_id=".intval($text_id)." AND NOT text_reihenfolge=3 ORDER BY
text_reihenfolge ASC");
Die Programmiererin verwendet MySQL-Version: 5.0.15 + Bug #13783
Ich verwende MySql 4.1.10 und der Server 4.1.11.
Ich habe durch ausprobieren mit PHP-MyAdmin herausbekommen, dass das Problem an dem NOT bzw. an dem AND NOT liegt.
Unterstützen diese älteren Versionen die Kombination der Operatoren (AND NOT) nicht? Wie kann man es dann anders ausdrücken, so dass es funktioniert (und zwar mit verschiedenen MySql-Versionen)?
Ich kann mir nun zwar in diesem Fall behelfen indem ich anstatt
PHP:
WHERE .... AND NOT text_reihenfolge=3
PHP:
WHERE .... AND text_reihenfolge<3
Wäre dann folgende Möglichkeit mit "!=" SQL kompatibler?
PHP:
sql=mysql_query("SELECT * FROM tabelle WHERE
text_id=108 AND text_reihenfolge!=3 AND text_reihenfolge!=1 ORDER BY
text_reihenfolge ASC");
Und wer kann mir sagen, was dieses ASC am Ende bewirkt?