Announcement

Collapse
No announcement yet.

Select von a bis z

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Select von a bis z

    Moin,

    ich möchte gerne Datensätzen in Grenzen abfragen. Es klappt auch. Aber irgendwie verschluckt er den letzten Index.. Code:

    Code:
    SELECT * FROM categories 
    INNER JOIN partner 
    ON partner.cat = categories.CID 
    
    WHERE partner.pname >= 'a'  AND partner.pname <= 'e' ORDER BY partner.pname
    Ich erhalte die Ergebnisse von A.* bzw. a.* bis D.* bzw. d.* ... Was ist, wenn ich jetzt auch Ergebnisse mit Z.* bzw. z.* haben möchte? Kann man die Zeichen nicht anders Codieren und die Grenze auf z+1 setzen? Oder geh ich da falsch ran?

    Das Ergebnis wird mit mittels PHP mit mysql_fetch_object() ausgeben.

    Gruß

  • #2
    mit

    Code:
    SELECT * FROM categories 
    INNER JOIN partner 
    ON partner.cat = categories.CID 
    
    WHERE partner.pname >= char(80) AND partner.pname <= char(91) ORDER BY partner.pname
    bekomme ich zwar das gewünschte Ergebnis, aber Umlaute müssen extra beandelt werden, und wenn ich Zeichenwerte an den Query übergebe ist noch ein Typecast nötig. Geht das einfacher?

    Comment


    • #3
      Untersuche nur das erste Zeichen des Eintrags

      Code:
      WHERE LEFT(partner.pname, 1) BETWEEN 'a' AND 'd'
      Bei Unbeachtung der Groß-/Kleinschreibung kannst du noch mit LOWER() umwamdeln.
      http://dev.mysql.com/doc/refman/5.0/...functions.html
      Bei SQL-Code bitte beachten: Formatierung von SQL in Beiträgen

      Comment


      • #4
        Moin,

        danke für die schnelle Antwort.

        Code:
        SELECT * FROM categories
        
        	INNER JOIN partner 
        	ON partner.cat = categories.CID 
        
        	WHERE LEFT(partner.pname, 1) 
        								
        	BETWEEN '0' AND 'Ä' 
        								
        	ORDER BY partner.pname
        irgendwie ist mein Antwort-Post verschwunden.. Ich schreibs nochmal kurz. Ich möchte gerne, dass er alle Einträge mit Ä nach A vor B sortiert. Komme ich da herum, ohne das Ergebnis in PHP manuell umzusortieren?

        //EDIT sonst würde es doch irgendwie keinen Sinn machen das auf diese Art und Weise alphabetisch zu sortieren...
        Zuletzt editiert von cla; 12.02.2010, 16:05.

        Comment


        • #5
          Da ein Name i.A. mit einem Großbuchstabe beginnt, könntest du es so versuchen
          Code:
          ORDER BY FIND_IN_SET(LEFT(partner.pname, 1), 'A,Ä,B,C,D,E,F,G,H,I,J,K,L,M,N,O,Ö,P,Q,R,S,T,U,Ü,V,W,X,Y,Z'), partner.pname
          Wobei ich jetzt nicht sagen kann, wie es sich bei den einzelnen Collation verhält.
          Bei SQL-Code bitte beachten: Formatierung von SQL in Beiträgen

          Comment


          • #6
            Originally posted by dibo33 View Post
            Da ein Name i.A. mit einem Großbuchstabe beginnt, könntest du es so versuchen
            Code:
            ORDER BY FIND_IN_SET(LEFT(partner.pname, 1), 'A,Ä,B,C,D,E,F,G,H,I,J,K,L,M,N,O,Ö,P,Q,R,S,T,U,Ü,V,W,X,Y,Z'), partner.pname
            Wobei ich jetzt nicht sagen kann, wie es sich bei den einzelnen Collation verhält.
            Es kann beides vorkommen... Ich versuchs mal, habe aber jetzt keine Zeit. Das Ding ist, ich schreibe auf Linux. Meine Text-Files sind UTF8. Character-Set in html ist UTF-8, alles, was das nicht ist, wird mit mb_convert_encoding() umgewandelt..
            Da auf der Seite auch ein AJAX-Script läuft, und man nicht wissen kann, was auf dem Server alles so konfiguriert ist, habe ich das so gemacht...

            Grüße

            Comment


            • #7
              Hab das wieder rückgängig gemacht. Das Dokument ist in UTF-8 geschrieben. Der Charset im Markup ISO8859-1, die Collation der Tabelle ist nun (leider?) auch UTF8-Unicode. Aber nun klappt es.. Danke nochmals für die schnelle Hilfe.

              Grüße

              Comment


              • #8
                die Collation der Tabelle ist nun (leider?) auch UTF8-Unicode.
                Nicht leider, sondern gut so.

                Setze ebenfalls das Markup auf UTF-8.

                Achte darauf, dass komplett alles auf UTF-8 gesetzt ist, dann hsat du die wenigsten Probleme.

                p.s.
                Da auf der Seite auch ein AJAX-Script läuft, und man nicht wissen kann, was auf dem Server alles so konfiguriert ist, habe ich das so gemacht...
                XHTTPRequest liefert ausschließlich UTF-8
                Bei SQL-Code bitte beachten: Formatierung von SQL in Beiträgen

                Comment


                • #9
                  Danke erstmal soweit..

                  ich hab nu ein anderes Problem:

                  ich hab inzwischen ne Zuordnungstabelle

                  cat_zuordnung:
                  pid (partner)
                  cid (kategorie)

                  und ein Formular, womit ich diese ändern möchte.
                  Hab mich mal schlau gemacht, das geht wohl mit
                  Code:
                  INSERT INTO cat_zuordnung (pid,cid) VALUES (p_id, c_id)
                  ON DUPLICATE KEY UPDATE pid=p_id, cid=c_id
                  ... oder eher nicht. Sollte ich lieber vorher alles löschen und neu reinschreiben? Oder kann ich da gar nichts machen, weil das ja beides FK sind... Es muss mindestens eine Zuordnung geben.

                  Comment


                  • #10
                    Setze pid und cid auf einen gemeinsamen UNIQUE-INDEX und werte eine evtl. Verletzung im Anwendungsprogramm aus.
                    Bei SQL-Code bitte beachten: Formatierung von SQL in Beiträgen

                    Comment


                    • #11
                      ARGH.. ich wusste doch, irgendwas habe ich vergessen... ;-) Dankeschön!

                      Die Querys werden von einer Klasse ausgeführt, die sehr rudimentäre SQL-funktionen bereitstellt. (Hab erst gestern was von PDOs gehört...) Geht was schief wird ne Exception geschmissen..

                      Comment

                      Working...
                      X