SQL Group by / Order by Kombi

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

  • SQL Group by / Order by Kombi

    Hallo!

    Ich möchte ein klitzekleines Forumskript basteln..
    stellt sich mir jetzt nur die Frage ob ich das Abfrageskript als Einzeiler hinbekomme (als SQL Abfrage) oder ob ich vorher noch ein PHP-Array basteln muss.
    Also die Tabellenstruktur sieht ungefähr so aus (ist ja alles noch veränderbar, wer also ne bessere/effektivere Lösung hat, ist herzlichst willkommen diese zu äußern):


    Die "Reply2ID" bezieht sich auf die "ID", wenn jemand auf ein Topic antwortet dann wird die ursprüngliche ID in jenes Feld geschrieben (so stelle ich mir das zumindest vor).

    Das Ergebnis sollte etwa so aussehen:
    [FONT=courier new]
    neu!
    Wetterumfrage
    alt
    Wie geht’s?
    danke, gut!
    mir geht’s auch gut
    [/FONT]

    so, habe noch eben die 2 spalten Datum und Zeit durch eine einzige "Datum"(DATETIME) ersetzt..
    diese ist jetzt eines der letzten queries..
    PHP-Code:
    SELECT FROM $DB Order BY Reply2ID,Datum ASC 
    Das scheint recht gut zu funktionieren.. allerdings tauchen die ältesten Einträge jetzt ganz oben in der Liste auf.. genau andersherum wäre wünschenswert..


    lässt sich das script überhaupt mit hilfe einer reinen sql-syntax umsetzen, oder muss erst alles in ein array geschrieben werden ?
    Wäre für Denkanstösse sehr dankbar.. oder sollte ich die Tabellenstruktur grundsätzlich anders machen ?
    Wie gesagt, soll ganz einfach gehalten werden, Baumstruktur, neueste Beiträge ganz nach oben in die Liste.
    Danke erstmal..
    gruß
    Frank
    Zuletzt geändert von Franktheman; 18.06.2007, 17:17.

  • #2
    Das scheint recht gut zu funktionieren.. allerdings tauchen die ältesten Einträge jetzt ganz oben in der Liste auf.. genau andersherum wäre wünschenswert..
    dann sortiere halt DESC.
    lässt sich das script überhaupt mit hilfe einer reinen sql-syntax umsetzen, oder muss erst alles in ein array geschrieben werden ?
    offensichtlich ja.

    oder sollte ich die Tabellenstruktur grundsätzlich anders machen ?
    nee, ist so üblich. guck dir einfach an, wie andere Foren gebaut sind. brauchst ja nicht alles neu zu erfinden.

    Du hast noch nicht berücksichtigt, dass ganz alte Threads mit ganz neuen Antworten weiterhin ganz weit unten stehen. Da solltest du noch mal ein paar Gedanken verschwenden.

    Kommentar


    • #3
      Danke TobiaZ für Deine Antwort..
      schau Dir mal die Hardcopies an..


      ich schätze mit der einfachen Syntax ist es nicht getan..
      muss wohl über Umwege eine PHP-Abfrage einrichten.. oder mich noch ein wenig in SQL üben..

      die Titel/Subjects sind in "bold".. falls das ein oder andere für Verwirrung sorgen sollte..

      Kommentar


      • #4
        zeig mal die zugehörige query. (zumindest den orderby-teil) und begründe was du gemacht hast.

        Kommentar


        • #5
          hier nochmal die Tabellenstruktur im Original


          Jetzt müsste "man" ja "nur" die "Reply2ID" in Gruppen packen..
          also die:
          1-1-1
          3
          5-5
          8

          das mache ich mit ORDER BY Reply2ID,
          wobei hier die Reihenfolgen der Antworten nach Datum sortiert werden müssen..
          das wäre dann ORDER BY Reply2ID, Datum ASC

          jetzt funktioniert das Script bereits 100% !
          Ein "Schönheitsfehler" ist quasi dass man die ältesten Threads oben hat, und entsprechend die Neuesten unten in der Liste..
          Jetzt wird's kompliziert, denn "DESC" bringt die Liste total durcheinander, man müsste also erst Abfragen welche "unique" Threads gibt es überhaupt und sortiert diese dann entsprechend nach Datum DESC..
          jetzt hat man nur die Threads in richtiger Reihenfolge - ohne die Antworten..
          also müsste man in einer Schleife die Threads durchgehen und die dazugehörigen Antworten suchen..
          tja, wäre halt schön wenn das in einer SQL-Anweisung machbar wäre,.. n Einzeiler..
          aber so wirds dann ein "kleines" php-script mit Arrays und Sortierungen..
          hmm...

          Kommentar


          • #6
            ORDER BY Reply2ID DESC, Datum ASC
            ?!

            Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

            bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
            Wie man Fragen richtig stellt

            Kommentar


            • #7


              Vielen Dank TobiaZ,.. das war tatsächlich so "einfach"..
              muss mich noch ein wenig intensiver mit solchen Abfrage-Dingen auseinandersetzen..

              aber stimmt..
              die neuesten Postings haben die höheren Werte.. also dort dann mit "DESC" von "oben nach unten" sortieren, und entsprechend das Datum.. genial...
              vielen Dank !
              gruß
              Frank

              Kommentar


              • #8
                Original geschrieben von ghostgambler
                ORDER BY Reply2ID DESC, Datum ASC
                ?!
                hey, sorry ghostgambler..
                habe jetzt erst bemerkt dass die Lorbeeren auch an Dich gehen müssten..
                Vielen Dank nachträglich !!!
                Hast mir sehr weitergeholfen !
                bis dann,
                gruß
                Frank

                Kommentar

                Lädt...
                X