Doppelte Sortierung!?

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

  • Doppelte Sortierung!?

    Ich hab eine kleine Denkblockade bei folgendem Problem. Ich habe eine Datenbanktabelle in der es u.a. die Felder 'word' und 'points' gibt.

    Es sollen die 3 Einträge mit den meisten 'points' abgefragt werden. Soweit kein Problem mit "ORDER BY points DESC LIMIT 3". Aber sie sollen auch in alphabetischer Reihenfolge (bzgl dem Feld 'word') zurückgegeben werden.


    Beispiel:
    word, points
    Bär, 12
    Affe, 32
    Falke, 38
    Esel, 17
    Chamäleon, 2
    Dromedar, 35


    Soll folgendes zurückgeben:
    word, points
    Affe, 32
    Dromedar, 35
    Falke, 38

    Ich habe schon folgendes versucht:
    PHP-Code:
    ORDER BY points DESCword LIMIT 3 
    Aber dann kommen zwar die 3 Datensätze mit den meisten 'points', aber sie sind nicht nach 'word' sortiert.

    Ist das überhaupt mit einer SQL-Abfrage realisierbar?
    Hoffe ich konnte gut erklären was ich möchte.
    Danke im Voraus!

  • #2
    PHP-Code:
    ORDER BY points DESCword ASC LIMIT 3 
    schon probiert ?
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      Danke für deine Antwort!

      Hatte ich nicht, weil standartmäßig die Sortierung ja ASC ist. Hab's gerade ausprobiert ->

      Kein Unterschied zu

      PHP-Code:
      ORDER BY points DESCword LIMIT 3 

      Kommentar


      • #4
        das wird wohl nur mit einer subquery gehen.

        Kommentar


        • #5
          Hast du dafür einen Vorschlag?

          Kommentar


          • #6
            Wie sieht denn dein SELECT Statement aus ?
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              welche datenbank benutzst du?

              Kommentar


              • #8
                PHP-Code:
                SELECT FROM `tx_facompanydb_tagcloudWHERE catid 2 ORDER BY points DESC word LIMIT 3 
                Die Tabelle hat die Struktur:
                PHP-Code:
                CREATE TABLE `tx_facompanydb_tagcloud` (
                  `
                uidint(11NOT NULL auto_increment,
                  `
                pidint(11NOT NULL default '0',
                  `
                tstampint(11NOT NULL default '0',
                  `
                crdateint(11NOT NULL default '0',
                  `
                cruser_idint(11NOT NULL default '0',
                  `
                wordtinytext NOT NULL,
                  `
                catidblob NOT NULL,
                  `
                pointsint(11NOT NULL default '0',
                  
                PRIMARY KEY  (`uid`),
                  
                KEY `parent` (`pid`)

                Die Einträge sind über die catid Kategorien in einer anderen Tabelle zugeordnet. Es werden immer nur einträge einer Kategorie abgefragt. Ist aber für das Problem eigentlich irrelevant.

                Kommentar


                • #9
                  MySQL 5.x

                  Kommentar


                  • #10
                    Sieht so nach Typo3 aus. Hat die Typo3 Klasse da keine Möglicheiten zu (Ich meine sowas schon gesehen zu haben)
                    gruss Chris

                    [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                    Kommentar


                    • #11
                      Original geschrieben von hhcm
                      Sieht so nach Typo3 aus. Hat die Typo3 Klasse da keine Möglicheiten zu (Ich meine sowas schon gesehen zu haben)
                      Ja, ich arbeite an einer Typo3-Extension.
                      Aber ich arbeite noch nicht so lange mit Typo3. Dass es eine solche Fuktion besitzt ist mir unbekannt.

                      Kommentar


                      • #12
                        Wie setzt du denn ein Query ab ?
                        gruss Chris

                        [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                        Kommentar


                        • #13
                          http://dev.mysql.com/tech-resources/...es_part_1.html

                          Code:
                          SELECT * FROM (
                            SELECT * FROM ...
                            ORDER BY ...
                          ) AS `tbl`
                          ORDER BY ...

                          Kommentar


                          • #14
                            @ hhcm: Im Skript setze ich den Query mit mysql_query() ab, da ich mich ehrlich gesagt nicht so viel mit den typo3-seitigen Methoden beschäftigt habe. Die Extension ist fast fertig und sie beinhaltet an sehr vielen Stellen viele Datenbankzugriffe - bisher klappte alles prima.

                            @ penizillin:

                            Ich habe folgende Abfrage per phpmyadmin ausgeführt:

                            PHP-Code:
                            SELECT *
                            FROM (

                            SELECT *
                            FROM `tx_facompanydb_tagcloud`
                            WHERE catid =2
                            ORDER BY points DESC
                            LIMIT 3
                            ) AS `tbl`
                            ORDER BY word ASC 
                            -> "MySQL lieferte ein leeres Resultat zurück (d.h. null Zeilen). (die Abfrage dauerte 0.0093 sek)"

                            Kommentar


                            • #15
                              mysql_error hast du aber auch eingesetzt gell?
                              gruss Chris

                              [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                              Kommentar

                              Lädt...
                              X