Abfragereihenfolge von Datensätzen

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

  • Abfragereihenfolge von Datensätzen

    Hallo zusammen,

    habe gerade ein kleines Problemchen mit MYSQL, bei dem ich etwas auf dem Schlauch stehe.

    Es geht darum in einer List die 20 letzten Textzeilen aus einer DB Tabelle anzuzeigen, wobei die neuste Zeile UNTEN stehen soll.

    Mach ich "ORDER BY id DESC LIMIT 20", seh ich zwar die 20 neusten Zeilen, jedoch steht die neuste oben, also genau verkehrt herum ;(

    Lasse ich das DESC weg, sehe ich die 20 ältesten Einträge, also auch falsch.

    Wie stelle ich es denn nun an?

    Google spuckt mir bei Suchen wie "MYSQL sortierung rückwärts" und Kram zwar tausende beiträge aus, jedoch behandelt keiner davon das was ich suche.


    Danke, Darky
    - Carpe Noctem -

  • #2
    Code:
    ORDER BY id ASC LIMIT 20

    Forumregeln!

    Gute PHP-(tutorial-)Seiten

    Kommentar


    • #3
      Original geschrieben von davidovich
      Code:
      ORDER BY id ASC LIMIT 20
      Nöö, das hab ich auch schon versucht, gibt mir die ältesten 20 aus, ich will aber die neusten 20!

      Darky
      - Carpe Noctem -

      Kommentar


      • #4
        ORDER BY id DESC LIMIT 20 und array_reverse sind ein tolles team
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          Original geschrieben von mrhappiness
          ORDER BY id DESC LIMIT 20 und array_reverse sind ein tolles team
          Gute Idee, aber gibt s keine Möglichkeit ohne den Umweg über das Array zu gehen, also direkt bei der SQL Abfrage?

          Darky
          - Carpe Noctem -

          Kommentar


          • #6
            Ohne Subquery: Nein
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              Original geschrieben von mrhappiness
              Ohne Subquery: Nein
              Hmmm und mit Subquery?

              Wobei ich gerade garnicht weiss wie das hierfür aussehen sollte, habe aber für Hilfe ein offenes Ohr

              Darky
              - Carpe Noctem -

              Kommentar


              • #8
                Die Subquery selektiert die neuesten Datensätze und die äußere query ordnet diese nach id aufsteigend

                Code:
                SELECT *
                FROM tabelle
                WHERE id IN 
                  (SELECT id FROM 
                  FROM tabelle
                  ORDER BY id DESC
                  LIMIT 20)
                ORDER BY id
                so in etwa
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  naja, hab cih wohl die Frage falsch gelesen *schäm*

                  Forumregeln!

                  Gute PHP-(tutorial-)Seiten

                  Kommentar


                  • #10
                    oder
                    Code:
                    SELECT * 
                    FROM (
                        SELECT * 
                        FROM tabelle
                        WHERE {conditions}
                        ORDER BY id ASC
                    ) AS a
                    ORDER BY id DESC
                    LIMIT 20
                    Ohne Subquery gehts nicht, weil MySQL keine Uservariablen in der LIMIT-Klausel unterstützt - und mir sonst nichts weiter einfällt.

                    EDIT:
                    ich war zu langsam
                    Zuletzt geändert von onemorenerd; 11.05.2005, 21:42.

                    Kommentar


                    • #11
                      Hmmm mrhappiness,

                      also mit

                      $abfrage = ("SELECT * FROM chatlog WHERE chat_id IN
                      (SELECT chat_id FROM chatlog ORDER BY chat_id DESC LIMIT 20)
                      ORDER BY chat_id") ;

                      bringt mir nur ein :

                      Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in text.php on line 26

                      irgendwas daran will er wohl nicht fressen, ich hab aber auch echt immer probleme mit dem verständnis solcher SQL Abfragen ;(

                      Darky
                      - Carpe Noctem -

                      Kommentar


                      • #12
                        Was für eine mySQL-Version hast du?

                        Ich bekomme die Meldung, dass meine Version (4.1.11) nicht mit LIMIT in einer Subquery umgehen kann

                        Wie gesagt: Mit PHP tut's auf jeden Fall
                        Ich denke, also bin ich. - Einige sind trotzdem...

                        Kommentar


                        • #13
                          Original geschrieben von mrhappiness
                          Was für eine mySQL-Version hast du?
                          4.0.24

                          Darky
                          - Carpe Noctem -

                          Kommentar


                          • #14
                            Original geschrieben von onemorenerd
                            ... weil MySQL keine Uservariablen in der LIMIT-Klausel unterstützt ...
                            Meinste? Wie funktioniert dann mien Blätterscript folgens:
                            Code:
                            LIMIT $start, $end
                            ?

                            edit:

                            oder meinste:
                            Code:
                            LIMIT COUNT(id)-20
                            Zuletzt geändert von davidovich; 11.05.2005, 21:59.

                            Forumregeln!

                            Gute PHP-(tutorial-)Seiten

                            Kommentar


                            • #15
                              Original geschrieben von DarkWanderer
                              4.0.24

                              Darky
                              array_reverse

                              mrhappiness
                              Ich denke, also bin ich. - Einige sind trotzdem...

                              Kommentar

                              Lädt...
                              X