Hi!
bin jetzt gerade dran.. jedoch seh ich denn Fehler nix. Denn meine Abfrage macht genau das gleiche wie vorhin.
Der PHP-Code ist an dieser Stelle uninteressant. Viel besser wäre es gewesen, wenn du das Statement lesbarer formatiert hättest. Dann wäre dir vielleicht auch aufgefallen, dass du zwar einmal die Premium-Daten selektierst, beim anderen sie aber nicht ausschließt. Ich hatte deine Aufgabenstellung umformuliert, um dir zu zeigen, wie die Abfrage aussehen muss (und nicht um zu zeigen, dass ich es verstanden hatte). Außerdem wolltest du zuerst die Premium-Sätze und dann erst die anderen, also musst du zuerst die Premium-Abfrage notieren und anschließend die Nicht-Premium-Abfrage. Sortieren nach Premium musst du nicht mehr, denn die Ergebnismengen werden durch das UNION nicht vermischt (solange du kein gemeinsames ORDER BY notierst).
(SELECT ...
FROM `eintraege` AS `s`
LEFT JOIN ...
WHERE
... AND
s.premium = '1' -- hier ist's
ORDER BY RAND()
LIMIT ...)
UNION
(SELECT ...
FROM `eintraege` AS `s`
LEFT JOIN ...
WHERE
... AND
s.premium <> '1' -- hier fehlt's
ORDER BY
s.premium DESC, -- muss weg
s.time DESC
LIMIT ...)
Diese Formatierung kannst du auch so in deinem PHP-Code notieren, dann kann man es auch da leichter lesen.
Lo!