MySQL union select

Dieses Thema im Forum "Datenbanksysteme für das Web" wurde erstellt von BadHorsie, 10.03.2005.

  1. BadHorsie

    BadHorsie Thread Starter MacUser Mitglied

    Beiträge:
    335
    Zustimmungen:
    0
    MacUser seit:
    21.04.2004
    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
     
  2. wegus

    wegus MacUser Mitglied

    Beiträge:
    15.041
    Zustimmungen:
    1.316
    MacUser seit:
    13.09.2004
    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!
     
  3. BadHorsie

    BadHorsie Thread Starter MacUser Mitglied

    Beiträge:
    335
    Zustimmungen:
    0
    MacUser seit:
    21.04.2004
    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
     
  4. wegus

    wegus MacUser Mitglied

    Beiträge:
    15.041
    Zustimmungen:
    1.316
    MacUser seit:
    13.09.2004
    @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: 10.03.2005
  5. BadHorsie

    BadHorsie Thread Starter MacUser Mitglied

    Beiträge:
    335
    Zustimmungen:
    0
    MacUser seit:
    21.04.2004
    Hm,

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

    Danke
    BadHorsie
     
Die Seite wird geladen...

Diese Seite empfehlen