EKKi: MySQL Order By & Limit

Beitrag lesen

Mahlzeit fritz85,

mysql> SELECT inserate.id FROM (SELECT inserate.id FROM inserate LIMIT 20) WHERE inserate.user LIKE '100' ORDER BY time DESC;

Na, dann sind in den 20 zufälligen Datensätzen keine die deiner äußeren Bedingung entsprechen. Es wundert mich auch, dass kein Fehler beim Ansprechen von inserate.user kommt, denn im Subquery fragst du ja nur insertate.id ab. Und da die Subquery im äußeren FROM steht kann die äußere Abfrage auch nur auf die von der Subquery gelieferten Daten zugreifen. Vielleicht solltest du die Bedingung in den Datenlieferanten aufnehmen, also in die Subquery. Außerdem kann man nicht nach etwas sortieren, das nicht vorhanden ist (außer vielleicht MySQL).

Wo muss denn die WHERE Abfrage stehen im Subquery oder im normalen Query?

Was genau hast Du an "Vielleicht solltest du die Bedingung in den Datenlieferanten aufnehmen, also in die Subquery." nicht verstanden? SQL-Abfragen werden von innen nach außen abgearbeitet. Wenn also die innere Abfrage nur die Spalte "inserate.id" liefert, wie soll dann die äußere Abfrage (die ja aus der Ergebnismenge, die die innere Abfrage erzeugt, weiter auswählt) dann dort eine Spalte "inserate.user" oder "time" finden?

MfG,
EKKi

PS: Was hat die Problemstellung eigentlich mit PHP zu tun?

--
sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|