Auge: UNION in IN() als Teil einer WHERE-Klausel? Zwischenstand.

Beitrag lesen

Hallo @dedlfix, @MudGuard und alle anderen

Leider hat weder der Tip, den gesamten UNION-SELECT innerhalb IN() einzuklammern, noch der, den UNION selbst noch einmal zu selektieren, funktioniert. MySQL meldet weiterhin, wie im OP gezeigt, einen Syntaxfehler.

Die Nutzerkommentare in der MySQL-Doku zu UNION brachten mich aber auf die Idee, den UNION als dessen Basis in den FROM-Block zu stecken.

SELECT
 ent.id,
 ent.user_id,
 ent.name,
 udat.user_name,
 ent.time,
 ent.subject,
 ent.category
FROM ((
 SELECT id, pid, tid, name, user_id, time, edited, last_reply, subject, category FROM entries WHERE spam = 0 ORDER BY time DESC LIMIT 6)
  UNION (
 SELECT id, pid, tid, name, user_id, time, edited, last_reply, subject, category FROM entries WHERE spam = 0 ORDER BY edited DESC LIMIT 6))
 AS ent
 LEFT JOIN userdata AS udat
  ON udat.user_id = ent.user_id
 ORDER BY time DESC
 LIMIT 6

Das funktioniert erst einmal grundsätzlich, auch wenn ich noch gewaltig an den Details feilen muss. Ich melde mich dann noch einmal mit weiteren Fragen oder dem Endergebnis.

Tschö, Auge

--
Wenn man ausreichende Vorsichtsmaßnahmen trifft, muss man keine Vorsichtsmaßnahmen mehr treffen.
Toller Dampf voraus von Terry Pratchett