Probleme mit Alphabetischer Sortierung

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

  • Probleme mit Alphabetischer Sortierung

    Er sortierts ja prima...nur Wörter mit ÄÖÜ setzt er ganz ans Ende...wie kann ich da abhilfe schaffen mit MYSQL 3.23.49

  • #2
    ein workaround direkt an der Datenbank:
    http://mysql-faq.sourceforge.net/tables3.html

    und einmal die daten an sich bearbeiten:
    http://www.dclp-faq.de/q/q-mysql-umlaute-sortieren.html

    hoffe, da ist was dabei

    Kommentar


    • #3
      das 2. faq find ich cool!
      dadrauf wär ich nie gekommen ....
      First: Things get worse under pressure.
      Second: If anything just cannot go wrong, it will anyway
      Third: A falling object will always land where it can do the most damage.

      Kommentar


      • #4
        mh... in telefonbüchern sind diese umlaute auch so einsortiert. als oe,ue,ae. (glaube ich gesehen zu haben...)

        Kommentar


        • #5
          hmmm, ja schon, im 2. beispiel aber ist es anders, bisschen redundante daten, aber ist ja egal, dafür wird richtig sortiert!
          First: Things get worse under pressure.
          Second: If anything just cannot go wrong, it will anyway
          Third: A falling object will always land where it can do the most damage.

          Kommentar


          • #6
            mußt du ja nicht, du kannst ja auch bei speichern der daten alles mit ae,ue,oe speichern lassen und änderst es wieder mit der ausgabe...

            Kommentar


            • #7
              Einziges Problem:
              a9 und a10 wird nicht nativ sortiert...
              für alle, die in php sortieren möchten und nicht aus MySQL direkt (ist das gleiche Prinzip):

              PHP-Code:
              // returns an array sorted including german umlauts
              function sortWithUmlauts($array){
                  
              $dblValues = array();
                  
              $sortedArray = array();
                  foreach(
              $array as $string){
                      
              $orig $string;
                      
              $string ereg_replace'(&(.)uml;)'"('\\1e')"$string);
                      
              $string ereg_replace'ä|Ä''ae'$string);
                      
              $string ereg_replace'ö|Ö''oe'$string);
                      
              $string ereg_replace'ü|Ü''ue'$string);
                      
              $string ereg_replace'ß|ß','ss'$string);
                      
              $string strtoupper($string);
                      
              $in = array($string$orig);
                      
              array_push($dblValues$in);
                  }
                  
              sort($dblValues);
                  foreach(
              $dblValues as $a){
                      
              array_push($sortedArray,$a[1]);
                  }
                  return 
              $sortedArray;

              Beantworte nie Threads mit mehr als 15 followups...
              Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

              Kommentar


              • #8
                @MoRtAlAn

                dann musste das ja jedesmal bei der ausgabe so umschreiben, oder ne funktion machen......
                nun ja, die redundanten daten sind ein riesiger brocken
                First: Things get worse under pressure.
                Second: If anything just cannot go wrong, it will anyway
                Third: A falling object will always land where it can do the most damage.

                Kommentar


                • #9
                  haben es anders gelöst...mit

                  REPLACE(CID_DATA, "Ä", "A")

                  Kommentar


                  • #10
                    Original geschrieben von MelloPie
                    für alle, die in php sortieren möchten und nicht aus MySQL direkt (ist das gleiche Prinzip)
                    Sieht ja ganz schön kompliziert aus... Ich habs so gemacht:
                    PHP-Code:
                    function cmp ($a$b) {
                        if (
                    $a == $b) return 0;
                        
                    $a=strtr($a,"ÄÖÜäöü","AOUaou");
                        
                    $b=strtr($b,"ÄÖÜäöü","AOUaou");
                        return (
                    $a $b) ? -1;
                    }
                    usort($array,"cmp"); 

                    Kommentar


                    • #11
                      Original geschrieben von MoRtAlAn
                      mußt du ja nicht, du kannst ja auch bei speichern der daten alles mit ae,ue,oe speichern lassen und änderst es wieder mit der ausgabe...
                      je nach art der daten eher suboptimal.

                      mein nachname beinhaltet z.b. ein "oe". das ist ein "niederrheinisches dehnungs-e", wird also als ein langes o ausgesprochen.

                      kommt bei mir auch des öfteren vor, dass ich post erhalte, in denen dann "oe" durch "ö" ersetzt wurde - ist aber leider falsch.

                      stört mich zwar nicht wirklich, aber bei uns in der firma hab ich im umgang mit kundendaten auch schon leute erlebt die wegen einem ähnlich gelagerten umstand theater gemacht haben ...
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar

                      Lädt...
                      X