sortieren nach rating falls vorhanden

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

  • sortieren nach rating falls vorhanden

    hi

    ich habe da eine tabelle mit momentan ziemlich genau 1067 DS.

    nun will ich jedem DS ein feld rating hinzufügen.
    das rating läuft von 1-5


    das problem liegt bei sortieren.
    und zwar hauptsächlich bei sortieren in dem ASC modus.

    nehmen wir mal an ich habe so eine tabelle:
    Code:
    -----------
    |id|rating|
    -----------
    | 1|     5|
    -----------
    | 2|     0|
    -----------
    | 3|     3|
    -----------
    | 4|     1|
    -----------
    | 5|     0|
    -----------
    diejenigen, die '0' als rating haben, sind diejenige, die bis jetzt gar keine bewertung hatten, also der standartwert beim feld. (int)

    wenn ich nach dem feld rating sotiere in DESC mode geht das gut.
    dann kommen zuoberst die mit dem hohen rating, und dann immer tiefergehend.
    alles richtig.

    aber wenn ich ASC nehme, kommen zuerst die, die kein rating haben (id 2 und 5), und erst dann die mit rating 1, dann 2 usw.

    ich will aber beim ASC mode zuerst die haben, die ein schlechtes rating haben, und nachdem die mit guten rating gekommen sind dann die, die gar keins haben.



    versteht ihr??
    kurz gesagt, er soll nur diejenigen DS beim sortieren beachten, welche zwischen 1 und 5 sind.



    PLz Help

  • #2
    *VERSCHIEB* nach sql


    so. und nun zu deinem problem was keines ist...

    die mysql macht alles richtig. ASC heisst aufsteigend.

    0 kommt vor 1 und 1 kommt vor 2. soweit sollte ja alles klar sein. oder?

    also sortiert er schon korrekt.

    wenn du die 0er nun separat machen willst, musst du das mit einer zweiten query machen.

    Code:
    SELECT * FROM tabelle WHERE rating != 0 ORDER BY rating ASC
    
    SELECT * FROM tabelle WHERE rating = 0
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      hm, ja, das das mysql alles richtig macht weiss ich schon.


      da null ja kleiner ist als ein.

      aber das probelm ist, da ich vom script her gezwungen bin, das ganze in einerm query zu machen, kann ich die antwort nicht gebrauchen.
      sorry


      aber so weit wäre ich eben von alleine gekommen.


      ich denke da müsste man doch per mysql eine neue spalte einführen welche den wert nur eintagt, wenn er nicht null ist



      wobei, da ist mir was kleines aufgefallen, was man machen könne.
      jo, ich denke ich habe vielleicht die lösung schon.

      ich prüfe, ob asc oder desc ist, und je nachdem, mache ich aus dem null ein null, oder halt ein tausend, und lade dies dann in eine neue tempräre spalte, und sortiere dann nach dieser.

      Kommentar


      • #4
        # nach Bewertung absteigend
        SELECT * FROM tabelle ORDER BY rating DESC;

        # nach Bewertung aufsteigend
        SELECT *, IF (rating > 0, 1, 0 ) AS sortby FROM tabelle ORDER BY sortby DESC , rating ASC:
        [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
        [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
        [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

        © Harald Schmidt

        Kommentar

        Lädt...
        X