letztes Datum aus mehreren Tabellen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • letztes Datum aus mehreren Tabellen

    Hallo zusammen,

    ich würde gerne aus mehrern Tabellen den letzten Forums Beitrag auslesen. Gehen sollte es mit:
    order by datestamp desc Limit 1
    Mit MAX(id) und last_insert_id geht ja nur wenn ich eine Tabelle habe.
    Aber da jedes Forum eine eigene Tabelle hat kommen die IDs in der Datenbank ja öfter vor. Gibts da irgend eine funktion wo er mir das letzte datum aus ALLEN Tabellen ausliest?

    Code:
    SELECT subject FROM $forum[table] order by datestamp desc Limit 1
    Damit erhalte ich leider den letzten Beitrag von JEDEM Forum.

    Danke für Hilfe!

  • #2
    Re: letztes Datum aus mehreren Tabellen

    Original geschrieben von wizzardxx
    Aber da jedes Forum eine eigene Tabelle hat kommen die IDs in der Datenbank ja öfter vor.
    diese vermurkste datenstruktur ist der erste punkt, wo du ansetzen solltest.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Hehe ne Ansetzen ist nicht das ist ne riesen Community mit fast 5000 User.
      Die habe ich auch nicht Programmiert sondern eine Firma.
      Gibts denn keine möglichkeit das letzte Datum aus allen Tabellen auszulesen? Wenns nicht möglich ist habe ich halt pech gehabt. Aber die Datenbank jetzt umfrickeln ist nicht.

      Kommentar


      • #4
        mit fast 5000 User.
        dann ists erst recht sinnlos, wenn du 5000 Tabellen miteinander verknüpfst...

        Kommentar


        • #5
          Nein es sind keine 5000 tabellen. Es existieren so ca. 30 Foren und jedes Forum hat eine eigene Tabelle in der DB. Die Datenbank-Struktur ist wirklich etwas verwirrend. Ich hätte eine Tabelle für die Foreneinträge gemacht und eine Tabelle Categorie. In der dann die Forenüberschrift eingetragen wird. Dann wäre das überhaupt kein Problem mit dem letzten Datum. Dachte es gäbe vielleicht eine möglichkeit die ich noch nicht kenne das letzte Datum aus allen Tabellen auszulesen.
          Aber wenns nicht geht dann gehts halt ned.

          Trotzdem Danke!

          Kommentar


          • #6
            aufgrund des verkorksten db-layouts bleibt dir evtl noch aus jeder tabelle den letzten wert zu nehmen, und dann in php einen vergleich zu machen.
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              Hehe ne Ansetzen ist nicht das ist ne riesen Community mit fast 5000 User.
              die anzahl der user steht doch nicht in relation zum arbeitsaufwand (des programmierers) beim umbasteln oder doch?
              Die Zeit hat ihre Kinder längst gefressen

              Kommentar


              • #8
                ....die anzahl der user steht doch nicht in relation zum arbeitsaufwand (des programmierers) beim umbasteln oder doch?

                Das stimmt schon. Aber ich darf an der Datenbank nichts ändern.
                Ich mache eine neue .php Datei in der nur der letzte post stehen soll.
                Und diese Datei wird dann auf die Startseite included.

                Kommentar


                • #9
                  Original geschrieben von wizzardxx
                  Ich mache eine neue .php Datei in der nur der letzte post stehen soll.
                  du müsstest also m.E. dreissig einzelne queries machen, um aus jeder tabelle den zeitpunkt des letzten posts auslesen (und dann von denen noch den höchsten raussuchen).

                  da kann ich nur raten: vergiss es, das wird irre unperformant - besonders wenn es dann auch noch über die startseite aufgerufen werden soll.


                  vielleicht kannst du dir ja eine zusätzliche kleine tabelle anlegen, in der du bei jedem neuen posting einfach tabellen/foren- und postingID sowie zeitpunkt einträgst.
                  und aus der liest du dann die gewünschte information aus. das wäre zum auslesen eine kleine query - im vergleich zu dreissig einzelnen.

                  entweder löschst du dann direkt nach dem eintragen eines neuen postings immer den alten datensatz, oder du lässt in der tabelle mehrere datensätze stehen (wählst dann immer nur den aktuellsten aus), und löscht in regelmässigem abstand alle bis auf einen.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    Original geschrieben von wahsaga
                    du müsstest also m.E. dreissig einzelne queries machen, um aus jeder tabelle den zeitpunkt des letzten posts auslesen (und dann von denen noch den höchsten raussuchen).
                    Nein ich brauche keine 30 Querys.
                    Code:
                    SELECT subject FROM $forum[table] order by datestamp desc Limit 1
                    $forum[table] ist eine variable mit der ich alle tabellen bereits ausgelsen bekomme. Und mit datestamp desc Limit 1 erhalte ich ja schon mal den letzten Post von jeder Tabelle.

                    guckst du hier:
                    http://www.foraus.de/test/lastpost.php
                    Von den einträgen brauche ich den letzten
                    Zuletzt geändert von wizzardxx; 04.07.2004, 12:07.

                    Kommentar


                    • #11
                      Original geschrieben von wizzardxx
                      Nein ich brauche keine 30 Querys.
                      Code:
                      SELECT subject FROM $forum[table] order by datestamp desc Limit 1
                      $forum[table] ist eine variable mit der ich alle tabellen bereits ausgelsen bekomme. Und mit datestamp desc Limit 1 erhalte ich ja schon mal den letzten Post von jeder Tabelle.
                      hm, mir ist noch nicht ganz klar, wie das funktioniert ... ist $forum[table] dann bereits in etwa eine solche "hilfstabelle", wie ich sie vorgeschalgen hatte ...?

                      Von den einträgen brauche ich den letzten
                      dann pack sie in ein array, und lasse dieses nach dem zeitpunkt sortieren, und nimm dir anschliessend das erste element heraus.
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar


                      • #12
                        wenn die DBMS mitspielt, kannst du über UNION die Daten mit einer Abfrage holen.

                        Kommentar


                        • #13
                          Ja mit den Arrays funktioniert das fast.
                          Aber ich mach es jetzt doch so das ich eine neue Tabelle anlege wo die neuen Posts rein kommen. Die Datebank Struktur ist echt zu mies.

                          Danke für die Vorschläge.

                          Kommentar

                          Lädt...
                          X