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

Beitrag lesen

Hallo

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.

Muss es unbedingt eine einzelne Monster-Query sein, oder kannst du das Union-Ergebnis erstmal in einer temporären Tabelle ablegen und diese dann nutzen?

Nein, eine Zwischenlagerung fällt aus, aber mit einem INNER JOIN auf die Tabelle selbst komme ich natürlich mit dem Feld „id“ als Ergebnis des UNION aus. Besser?

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

Tschö, Auge

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