PHP - order by - sortieren nach mehreren Tabellenfeldern

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

  • PHP - order by - sortieren nach mehreren Tabellenfeldern

    Hallo,

    ich habe eine Frage und hoffe mir kann jemand helfen...

    ich habe eine Tabelle mit X - Feldern, z.B. datum1,datum2,datum3

    Inhalt z.B. 01.01.2008, 02.01.2008. 03.01.2008 usw

    kann ich diese trotzdem iwie sortieren?

    normalerweise ja "SELECT.... ORDER BY datum"

    aber wie mach ich das wenn ich mehrere Felder habe?

    ich dachte an sowas wie eine Reihenfolge in einem neuen Feld festlegen,
    aber kA ob und wie das ginge

    evtl. beim einfügen von datumX das Feld "reihenfolge" auslesen und ne zahl für die reihenfolge rein...

    z.B. datum1 = 01.01.2008, reihenfolge = datum1
    ... datum2 = 03.01.2008, reihenfolge = datum1, datum2
    ...datum3 = 06.01.2008, reihenfolge = datum1, datum2, datum 3
    ...datum4 = 04.01.2008, reihenfolge = datum1,datum2, datum4, datum3
    ...datum5 = 02.01.2008, reihenfolge = datum1, datum5, datum2, datum 4, datum 3

    usw...

    ginge das?!

    help

  • #2
    Also ein "ORDER" ist ja die sortierung der abfrage. nimmst du "ORDER BY datum" wird nach dem neuesten datum gesucht. Nimmst Du "ORDER BY datum DESC" wird nach dem ältesten datum gesucht.

    möglich wäre da noch ein "datum LIKE '%$datum%' zu verwenden. allerdings bekommst du da nicht alle ergebnisse. ich denk da musst du dir ne funktion schreiben, die alles ausliest und dann entsprechend nach deinen kriterien sortiert.
    Signatur-Text ...

    Kommentar


    • #3
      ich kann mich ja auch täuschen, aber funzt da nicht ein einfaches
      SELECT * FROM table ORDER BY datum1 ASC, datum2 ASC, datum3 ASC
      usw??

      Kommentar


      • #4
        lach - ehrlich? keine ahnung! hatte diesen fall noch nicht *schäm*
        Signatur-Text ...

        Kommentar


        • #5
          danke für eure Antworten

          das Problem ist... dass ich eigentlich nach einer Uhrzeit sortieren muss und zwar erst nachdem ich nach dem Datum sortiert hab...

          hab also folgendes vor ( kA obs so geht... )

          SELECT * FROM 'tabelle' where id=$id ORDER BY datum ASC, uhrzeit1 ASC, uhrzeit2 ASC, uhrzeit3 ASC ...

          ich möchte also erst nach dem Datum sortieren und dann nach der Uhrzeit

          ich werds mal ausprobieren

          Kommentar


          • #6
            wenn du es probiert hättest, hättest du wohl sicher gemerkt, dass es geht

            wenn ich mich nu nicht zu gewaltig täusche, siehts so aus:

            order by [primäres kriterium],[innerhalb des ersten kriterium sortiere nach zweitem kriterium], und so weiter....

            äh, war das verständlich??
            **********
            arkos
            **********

            Kommentar


            • #7
              Original geschrieben von arkos
              äh, war das verständlich??
              Ja, und richtig.

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

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

              Kommentar


              • #8
                mhh entweder ich peils net oder da is doch en Ausdruckfehler

                Bsp.:

                id datum uhrzeit1 uhrzeit2 termin1 autor1 termin2 autor2
                1 01.01. 08 09 a dirk d tim
                2 02.01. 11 09 b lothar e rick
                3 03.01. 07 10 c tobi f lisa

                ich mach jetzt ne Abfrage SELECT * FROM '' ORDER by ID

                und gebe zB das Datum aus

                er gibt mir dann also 01.01.,02.01.,03.01.,... aus

                dadrin befindet sich eine Abfrage die sich auf weitere Felder bezieht, zB Termin, Autor

                also wieder ein SELECT * FROM where datum=$datum

                er gibt mir dann also bei ID 2, Datum 02.01. zB den Termin + Autor aus

                nun möchte ich aber die Termine vom 02.01. nach der Uhrzeit sortiert haben... also beim 02.01. käme dann also Termin2 um 09 Uhr zuerst, Termin1 der um 11 Uhr ist, erst danach...

                gruß
                Schimpy

                Kommentar


                • #9
                  gib einfach mal folgendes ein um zu sehen, was passiert.

                  select * from deine_tabelle order by datum ASC, uhrzeit1 ASC;


                  MAL SO GANZ AM RANDE.... welche formate haben deine datenbankfelder????????
                  **********
                  arkos
                  **********

                  Kommentar


                  • #10
                    Original geschrieben von arkos
                    gib einfach mal folgendes ein um zu sehen, was passiert.
                    select * from deine_tabelle order by datum ASC, uhrzeit1 ASC;


                    das habe ich eingegeben, passiert genau das selbe...
                    ob ich uhrzeit1 ASC, uhrzeit2 ASC,uhrzeit3 ASC hinschreibe oder nicht
                    ist dem total Latte, gibt keine Fehlermeldung und auch sonst nichts

                    MAL SO GANZ AM RANDE.... welche formate haben deine datenbankfelder????????
                    das Feld uhrzeit ist vom typ VARCHAR
                    dürfte aber trotzdem klappen, da ich andere Felder mit VARCHAR habe und die lassen sich auch anhand von zahlen sortieren...

                    Kommentar


                    • #11
                      du willst VARCHAR felder so sortieren, wie man es mit DATE und co macht? da denk mal drüber nach... mach das ordentlich...
                      **********
                      arkos
                      **********

                      Kommentar


                      • #12
                        okay habs geändert...

                        aber hilft mir ja trotzdem nicht weiter

                        da mir ein ORDER BY uhrzeit nix bringt...
                        da ich ja alle Werte uhrzeit1,uhrzeit2,uhrzeit3 unter einen Hut bringen muss...

                        hab schon versucht die bei jedem Beitrag in ne andere Datenbank umzuspeichern... aber das klappt och net so richtig

                        helllllppp

                        Kommentar


                        • #13
                          Deine Tabelle scheint nicht richtig Normalisiert zu sein!

                          Kommentar


                          • #14
                            ich würde dir empfehlen, deine db umzugestalten. pack die termine doch einfach kombiniert in ein Datetime-Feld. Die kannst du hand herzallerliebst sortieren.

                            lesen:
                            http://dev.mysql.com/doc/refman/5.0/en/datetime.html


                            guten morgen

                            edit: gibts ja auch auf deutsch
                            http://dev.mysql.com/doc/refman/5.1/de/datetime.html
                            **********
                            arkos
                            **********

                            Kommentar

                            Lädt...
                            X