[SQL allgemein] Group by und Order by - Höchste ID

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

  • [SQL allgemein] Group by und Order by - Höchste ID

    Hi,
    folgende Frage.
    Wie in einem Forum werden bestimmte Datensätze ausgegeben und absteigend angezeigt entsprechend einer bestimmten Gruppe.

    PHP-Code:
    GROUP BY user_id ORDER BY mailbox_id DESC LIMIT ".$start.",".$pageadd); 
    Es wird jede Gruppe nur einmal angezeigt, jedoch sollen die Gruppen absteigend nach Ihren beinhalteten IDs angezeigt werden.
    Das heißt, die Gruppe mit der neusten ID ganz nach oben usw.
    Gibt es dafür eine Funktion in sql?

  • #2
    was ist denn mailbox_id? bzw wo steht das neuste Datum? Du bist immer recht spärlich mit deinen Informationen..die gesamte Query wäre nie schlecht
    OffTopic:

    für welche Firma arbeitest du eigentlich oder machst du das privat?

    Kommentar


    • #3
      Original geschrieben von krel
      was ist denn mailbox_id? bzw wo steht das neuste Datum? Du bist immer recht spärlich mit deinen Informationen..die gesamte Query wäre nie schlecht
      OffTopic:

      für welche Firma arbeitest du eigentlich oder machst du das privat?

      Ich arbeite in der Firma. (azubi)
      Und ich und mein Azubikollege bekommen Projekte auf, um in den 3 Jahren zu lernen.

      mailbox_id ist die auto_increment id.

      Kommentar


      • #4
        lernen ist immer gut
        wie sieht denn dein Tabellenschema aus? und die gesamte Abfrage fehlt noch

        Kommentar


        • #5
          PHP-Code:
          $mysql_result mysql_query("SELECT user_nick,
                                                  user_id,
                                                  mailbox_id,
                                                  mailbox_fromid,
                                                  mailbox_toid,
                                                  mailbox_timestamp,
                                                  SUM(mailbox_status) as mailbox_status,
                                                  mailbox_subject
                                              FROM mailbox,
                                                  user
                                              WHERE mailbox_toid = "
          .$_SESSION['id']."
                                              AND user_id = mailbox_fromid
                                              GROUP BY user_id ORDER BY mailbox_id DESC LIMIT "
          .$start.",".$pageadd); 

          Kommentar


          • #6
            ich versteh noch nicht ganz was du willst..
            mailbox sind deine "Gruppen" und die enthalten Nachrichten?
            Dann muss du nen Join auf die nachrichtentabelle machen und dann nach dem dortigen Timestamp sortieren

            Kommentar


            • #7
              Tabelle Mailbox beinhaltet Nachrichten, von wem Sie sind und zu wem Sie gehen sollen, eine eindeutige id (mailbox_id) und noch andere Infos.

              Tabelle User beinhaltet Usernamen, Useremail etc.

              Nun lasse ich anzeigen, wenn Nachrichten in der Tabelle "Mailbox" für mich vorhanden sind.
              Wird zurückgeschrieben und wieder geantwortet und so weiter, lasse ich nicht jede Nachricht einzeln anzeigen, sondern nur einmal den Namen des Absenders.
              Wenn ich den dann anklicke, werden alle Nachrichten zwischen diesen personen in chronologischer reihenfolge angezeigt.

              WENN jedoch ich nun auf der Übersicht bin, auf der nur ein einziges mal ein Username auftaucht und dieser User hat eine neue Nachricht an z.b. mich geschickt, dann soll dieser User logischer weise ganz oben stehen.

              Im Prinzp sollen die Group By User so angeordnet werden, das derjenige mit der neusten id oben steht und der älteste unten.

              Eigentlich exakt wie hier im Forum mit den Threads !

              Kommentar


              • #8
                und wie sieht das ergebnis deiner Abfrage aus? wenn mailbox_id sich bei jeder Nachricht erhöht, dann sollte da auch immer die neuste drin stehen..
                versuch aber mal folgendes:

                PHP-Code:
                $mysql_result mysql_query("SELECT user_nick,
                                                        user_id,
                                                        MAX(mailbox_id),
                                                        mailbox_fromid,
                                                        mailbox_toid,
                                                        mailbox_timestamp,
                                                        SUM(mailbox_status) as mailbox_status,
                                                        mailbox_subject
                                                    FROM mailbox,
                                                        user
                                                    WHERE mailbox_toid = "
                .$_SESSION['id']."
                                                    AND user_id = mailbox_fromid
                                                    GROUP BY user_id ORDER BY mailbox_id DESC LIMIT "
                .$start.",".$pageadd); 
                damit wird dann jeweils die größte, also auch die neuste, id (Zeile) selektiert

                Kommentar


                • #9
                  Ich glaube das dürfte funktionieren.
                  Ich hatte gerade den selben einfall, hatte MAX() jedoch bei
                  PHP-Code:
                  ORDER BY MAX(mailbox_id 
                  angesetzt.

                  Dankeschön
                  Die Logik von SQL ist wohl simpel, man muss sie aber erstmal verstehen lernen *schäm*

                  Kommentar


                  • #10
                    bekommt ihr denn keine Ünterstützung von den "alten Hasen" bei euch? bzw in der Schule?

                    Kommentar


                    • #11
                      Original geschrieben von krel
                      bekommt ihr denn keine Ünterstützung von den "alten Hasen" bei euch? bzw in der Schule?
                      Nein. Wir bekommen ein Projekt auf, werden mit Projektplanungen beworfen und müssen loslegen.
                      Uns hilft keiner. Wir sind Zwei Azubis und der Rest der Mitarbeiter verbunkert sich in Ihren Abteilungen.
                      Wenn man die mal Fragt, sagen die einem immer das sie es nicht wüssten.

                      Wir leben hier nur vom Manual.
                      Dann gibt man uns auf sich mit mssql, mysql, ldap systemen, c# und VB auseinander zu setzen.
                      Das ist einfach zuviel Input und man bringt alles durcheinander

                      Arbeite in Hannover als FIAE

                      (PostScriptum: MAX() funktioniert nicht )

                      Kommentar


                      • #12
                        sie sql_query mit dem MAX() gibt aus:

                        PHP-Code:
                        user_nick  user_id  MAX(mailbox_id)  mailbox_fromid  mailbox_toid  mailbox_timestamp  mailbox_status  mailbox_subject  
                        Administrator 17 27 17 17 1228298219 1 asd 
                        Klaudia 21 20 21 17 1228210528 0 Hi Admin 2 
                        Es sind auch nur 2 Testaccounts.
                        Jedoch wird der Account, der die neuere ID enthält, nich oben angesetzt.

                        Kommentar


                        • #13
                          also für mich ist 27 größer als 20 und somit doch die neuere Nachricht oder?
                          OffTopic:

                          aber ihr geht doch auch zur BBS oder? was lernt ihr denn dort?

                          Kommentar


                          • #14
                            Original geschrieben von krel
                            also für mich ist 27 größer als 20 und somit doch die neuere Nachricht oder?

                            Eigentlich schon! Ich habe die Tabelleneinträge und die Queryausgabe mal hochgeladen:


                            OffTopic:

                            aber ihr geht doch auch zur BBS oder? was lernt ihr denn dort?

                            OffTopic:


                            Ja wir gehen zur MultiMedia BBS.
                            Was wir dort lernen?
                            Wir lernen Politik, Sport, Englisch, Unternehmensberatung und sonst lernen wir HTML.

                            Der Standard dort liegt wohl sehr tief...
                            Im 3 Lehrjahr gibt es dann in der BBS php und sql *kopfschüttel*
                            Uns wird einfach soviel abverlangt, das wir nurnoch im Internet am rumsuchen sind wir die dummen um schnellst möglich funktionen zu finden die unser Problem lösen.

                            Zuletzt geändert von phpMorpheus2; 03.12.2008, 12:32.

                            Kommentar


                            • #15
                              also irgendwie passen ausgabe und Tabelleninhalt nicht zusammen, hast du zwischen abfrage und screenshot noch was in der DB geändert?
                              mach mal nen Dump und häng den an

                              Kommentar

                              Lädt...
                              X