einfachste Weg: Daten sortiert aus 3 Tabellen

  • Tach,

    ich will auf einer Seite die 10 neusten Einträge aus 3 Kategorien ausgeben.
    Die 3 Kategorien sind voneinander total unabhängig, hinter jeder steht eine
    Datenbank-Tabelle, jede Tabelle enthält ein Datumsfeld (nach dem soll sortiert
    werden).

    Wie löst man des Problem am besten ? Sammeln in nem Array ?
    Anlegen einer temporären Tabelle ? oder die IDs fest in einer sammeln ?

    *thx*

  • Ich würde temporär HTML-Code in einer Datei speichern. Sprich, wenn in einer Kategorie was dazukommt, einmal nen SQL-Query Abfeuern und daraus HTML-generieren und das dann per include() oder file_get_contents() am entsprechenden platz einbinden.

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • Spontan würde ich zu einer temporären Tabelle raten.

    Passt es denn von der Normalisierung, dass jede Kategorie eine eigene Tabelle hat? Oder könnte man die Kategorien zusammenlegen in einer Tabelle mit einem zusätzlichen Schlüssel der definiert um welche Kategorie es sich handelt? Oder ansonsten die Spalten die in allen 3 Kategorien vorkommen in einer Tabelle zusammenfassen und nur Inhalte die sich stark unterscheiden in die jeweiligen einzelnenen Kategorie-Tabellen auslagern?
    Ich weiß ja nicht was du machen willst, daher ist das ein Schuss ins Blaue, in den meisten Fällen zu deiner Problembeschreibung ist aber eine Optimierung der Tabellenstrukturen wesentlich sinnvoller, als sich irgendwie eine Lösung zurechtzubiegen, die mit der aktuellen Tabellenstruktur läuft. Du mußt ja offensichtlich an mindestens einer Stelle (wo dein geschildertes Problem auftritt) auf alle Kategorien auf einmal zugreifen, also gibt es offensichtlich einzelne Daten in den verschiedenen Tabellen, die zusammengehören. Die sollten dann auch in nur einer Tabelle stehen.

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  • gemeinsame tabelle is leider nicht möglich da sich die strukur (felder) komplett unterscheiden,
    einziges gemeinsames feld welche alle 3 kategorien haben ist das datum...

  • Na das musst du selbst entscheiden, entweder in einem Query alle 3 Abfragen oder pro Kathegorie einen Query
    Diese Entscheidung sollte aber hier keine Rolle spielen, pro Kathegorie ein Query ist das einfachste !

    Ansonsten eben so aufbauen:

    $muh[erstecatmuh][1] = 'muh der inhalt';
    $muh[erstecatmuh][2] = 'muh der inhalt';

    $muh[zweitecatmuh][1] = 'muh der inhalt';
    $muh[zweitecatmuh][2] = 'muh der inhalt';


    Aber das einfachste sind 3 Queries

  • wäre nicht auch nen view ne möglichkeit, damit alles zu holen an daten und dann eben aus dem view entsprechende infos auszulesen?
    oder is das die sache mit der einen tabelle, die nich geht??

  • Wenn die 3 Tabvellen sich unterscheiden, ist Pions Lösung die einzige, die da möglich ist (meines Wissens nach).
    Also aus jeder Kategorie mit einem einzelnen Query die 10 aktuellsten auslesen und dann mit php oder was immer sortieren.


  • Wo die Spalten nich da sind, ist der Wert ja dann einfach NULL

    Naja das ist im Grunde ja egal ;)

  • UNION hört sich gut an, hab gestern noch ein wenig experimentiert und konnte dann sogar 2 Tabellen zusammenfassen.
    viele der Daten die in der anderen mehr drin waren kann ich auch selbst generieren, die müssen net in der db stehen.

    heut abend mal testen. Dank euch :)

  • stimmt.. union hatten wir in der ausbildung kurz vorm ende auch ein mal.
    als würd einer im kopp behalten, was man in einer der letzten 6 std vor schul-ende mal nebenher gemacht hat weil der pauker keine lust mehr hatte was anständiges zu machen^^

  • stimmt.. union hatten wir in der ausbildung kurz vorm ende auch ein mal.
    als würd einer im kopp behalten, was man in einer der letzten 6 std vor schul-ende mal nebenher gemacht hat weil der pauker keine lust mehr hatte was anständiges zu machen^^

    Wie jetzt, dann hast du anscheinend noch nicht viele Mysqlangriffe/injections durchgeführt ;)