dedlfix: MySQL order by + rand()

Beitrag lesen

Hi!

Ja, stimmt, das LIMIT muss auch außen hin und nicht in die Teilabfragen.
Das hab ich gemacht :)

Ja, eins. Und das obere muss auch noch raus, oder willst du von den Premiums generell nur 10 angezeigt bekommen?

WHERE
    ... AND
    s.premium <> '1'
  ORDER BY
    s.premium DESC,
    s.time DESC

So funktioniert es auch jedoch werden die Nicht-Premium-Einträge nicht nach s.time DESC sortiert. :-/

Wenn der Wert in s.premium nur 0 oder 1 annehmen kann, und die 1 ausgeschlossen ist, muss auch nicht nach dem Rest sortiert werden. Da in deinem Fall der Rest aber nur (anzunehmenderweise) 0 ist, sollte er keine Auswirkungen auf die Reihenfolge haben, weil dann immer das zweite Sortierkriterium (s.time) zieht. Es sollte also nur so lauten:

ORDER BY
    s.time DESC

Warum es dann aber nicht sortieren soll, entzieht sich meiner Kenntnis. Der Feldtyp in s.time ist ein Datumstyp oder ein Integer, der einen Unix-Timestamp verkörpert, oder ein String?

Wenn du mal die zweite Teilabfrage einzeln mit phpMyAdmin oder ähnlichem Tool ausführst, wird es dann richtig sortiert ausgegeben?

Lo!