MySQL union select

B

BadHorsie

Aktives Mitglied
Thread Starter
Dabei seit
21.04.2004
Beiträge
335
Reaktionspunkte
0
Ich habe mehrere Tabellen die News enthalten. Diese sind mit einem Zeitstempel versehen. Um nun die 8 neuesten News zu erhalten nehme ich folgendes Query:

PHP:
$query  = 'SELECT id, date, title, teaser, "verein" as table_id FROM news_verein ';
$query .= 'UNION SELECT id, date, title, teaser, "spiele" as table_id FROM news_spiele ';
$query .= 'UNION SELECT id, date, title, teaser, "teams" as table_id FROM news_teams ';
$query .= 'WHERE status="online" ORDER BY date DESC LIMIT 8';

Leider funktioniert der UNION Befehl erst seit MySQL >= 4.0. Beim aktuellen Provider läuft aber MySQL v3.2 irgendwas. Gibt es hier eine Alternative zum UNION Befehl, oder muß ich tatsächlich aus jeder Tabelle nie 8 neuesten News extrahieren, in ein Array packen und daraus wieder die 8 neuesten extrahieren?

Bin für schnelle Hilfe dankbar, da Zeitdruck!
BadHorsie
 
Also auf den ersten Blick:

unglückliches DB-Design! Besser wäre doch eine Tabelle news mit einer Spalte kategorie=verein,teams,spiele ! Schließlich ist die Grundstruktur ja offenbar bei allen Tabellen gleich! Ich kann mir auch vorstellen das das etwas performanter ist, als dieser UNION-Operator!
 
Mit der Antwort habe ich schon gerechnet. Verdammt. Ist ziemlich viel Arbeit das ganze wieder umzubauen. Und zeitlich hänge ich drastig hinterher.

Aber danke für die schnelle Antwort
BadHorsie
 
@BadHorise: I know, nur so entsteht so etwas ;) Sieht bei mir manchmal ähnlich aus. Irgendwann ist dann der Tag wo sich aufräumen lohnt. Du kannst doch betsimmt alle Zeilen mit select into in eine neue Tabelle inklusiv Kategorie-Spalte schreiben. Das geht doch sogar on the fly - vorausgesetzt MySQL 3.2 beherscht select into!

Ach: wenn es wirklich nur 3-5 Tabellen sind, behelf Dir doch zunächst mit einer 3-5fachen Abfrage per PHP-Stringmanipulation ja uach nicht schwer. Dann macht halt PHP den "UNION" auf die Ergebnisliste!
 
Zuletzt bearbeitet:
Hm,

habe schon angefangen alles auf eine Tabelle umzubauen! Es sind nur 3 Tabellen. Sollte in 1-2 Stunden erledigt sein.

Danke
BadHorsie
 
Zurück
Oben Unten