Ankündigung

Einklappen
Keine Ankündigung bisher.

2 mal sortieren in einem query?

Einklappen

Neue Werbung 2019

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

  • 2 mal sortieren in einem query?

    Servus Leute,

    ich möchte eine SQL Abfrage haben, die mir folgendes liefert:

    Es gibt zwei relevante Felder in einer Tabelle.

    "regtime"
    und
    "geschlecht"

    Das Feld "regtime" speichert den timestamp des Zeitpunktes der Anmeldung.

    Und Geschlecht halt das Geschlecht

    Nun möchte ich, dass ich die letzten 10 Anmeldungen ausgegeben werden und INNERHALB dieser 10 Anmeldungen nocheinmal nach dem Geschlecht sortiert wird.

    Wie mache ich das?

    Danke!!


  • #2
    In diesem Fall würde ich zunächst alle Primärschlüssel der Datensätze ermitteln, die sich zuletzt registriert haben. Diese Abfrage kannst du als Subselect für die eigentlichen Abfrage benutzen, in der du dann nur noch nach dem Geschlecht sortierst.

    Kommentar


    • #3
      Code:
      ORDER BY regtime DESC, geschlecht ASC
      Bitte vorerst im PHP-Anfägerforum bleiben @becks

      Kommentar


      • #4
        Zitat von Zergling
        Code:
        ORDER BY regtime DESC, geschlecht ASC
        Das dürfte so nicht funktionieren, da dann trotzdem noch die Geschlechter vermischt sind, da der Teil für die Sortierung nach dem Geschlecht nur greift, wenn die Registrierungszeit gleich ist.

        Zitat von Zergling
        Bitte vorerst im PHP-Anfägerforum bleiben @becks
        Das Problem würde ich eher im Bereich MySQL ansiedeln.

        Kommentar


        • #5
          10 Datensätze können auch gerade noch innerhalb von php sortiert werden.
          mysql: nach Zeit sortieren, LIMIT 10
          php: diese 10 Datensätze nach Geschlacht sortieren.

          Kommentar


          • #6
            @Zerling: Da hast du wohl SQL noch nicht richtig verstanden :wink:

            Es geht darum, dass innerhalb der Geschlechter nocheinma nach dem Alter bzw. dem Geburtsdatum sortiert werden soll...

            D.h. alle Datensätze die sich als letztes registriert haben von dem Geschlecht männlich, und die dann nochmal sortieren nach dem Alter.

            In der Datenbank wird das Geburtsdatum abgespeichert...

            Hatte vergesse zu erwähnen, sorry

            Kommentar


            • #7
              Da Du es nocheinnmal beschreibst, muss ich nach dem Unterschied zu
              - letzte 10 Anmeldungen
              - diese 10 Datensätze "in sich" sortieren
              fragen.

              Kommentar


              • #8
                Zitat von becks123
                INNERHALB dieser 10 Anmeldungen nocheinmal nach dem Geschlecht sortiert wird.
                [..]
                @Zerling: Da hast du wohl SQL noch nicht richtig verstanden :wink:

                Es geht darum, dass innerhalb der Geschlechter nocheinma nach dem Alter bzw. dem Geburtsdatum sortiert werden soll...
                Formulier halt deine Frage anständig, das hat mit meinem SQL-Verständnis nichts zu tun.

                Kommentar


                • #9
                  also...nochmal von vorne:

                  Ich hole mir aus EINER Tabelle die LETZTEN 10 Anmeldungen von dem Geschlecht "m"

                  PHP-Code:
                  Select from `mitgliederWHERE geschlecht 'm' ORDER by regtime DESC LIMIT 10 
                  Nun sind die letzten 10 Mitglieder aber auch unterschiedlichen Alters!

                  Beispiel für letzten 10 Anmeldungen:

                  superman - alter 20 - 06.01.2006 7:05 Uhr
                  hulk - alter 18 - 06.01.2006 6:05 Uhr
                  booster - alter 19 - 06.01.2006 5:05 Uhr

                  usw.

                  Jetzt möchte ich, dass diese letzten 10 Anmeldungen NOCHEINMAL nach dem Alter sortiert werden:


                  hulk - alter 18 - 06.01.2006 6:05 Uhr
                  booster - alter 19 - 06.01.2006 5:05 Uhr
                  superman - alter 20 - 06.01.2006 7:05 Uhr


                  Es bleiben ja immer noch die letzten 10 Anmeldungen, nur dann nach dem Alter sortiert...

                  Kommentar


                  • #10
                    Nun ja. Du könntest eine Hilfstabelle erstellen, dort die Mitglieder aus der ersten Abfrage eintragen, nach alter sortiert wieder abfragen und den Tabelleninhalt wieder löschen.

                    Inwieweit das aber sinnvoll ist, bzw. performant darfst du mich aber nicht fragen.

                    Gibt bestimmt bessere Lösungen!
                    Und geht auch alles in die Binsen, immer heftig weiter grinsen!

                    Kommentar


                    • #11
                      würde funktionieren....

                      hat keiner eine andere möglichkeit?

                      Kommentar


                      • #12
                        @becks123: kennst du das Wort "jeweils"?

                        Bruchpilot hat schon die für mich einzig sinnvolle Lösung gepostet.

                        Kommentar


                        • #13
                          Nur dass ich dachte, es soll sekundär nach Geschlecht sortiert werden
                          Zitat von becks123
                          Nun möchte ich, dass ich die letzten 10 Anmeldungen ausgegeben werden und INNERHALB dieser 10 Anmeldungen nocheinmal nach dem Geschlecht sortiert wird.
                          und nicht nach Geburstag. Schleichende Änderung der Frage; supi.

                          Kommentar


                          • #14
                            wie gesagt, die letzte Erklärung ist nun die richtige

                            Kommentar


                            • #15
                              Ja, und sie bietet keinen Vorteil gegenüber der Soriertierung in php.

                              Kommentar

                              Lädt...
                              X