bibo: SQL statement fehler?

hallo,

ich komm einfach nicht auf den fehler in diesem statement drauf!

DELETE FROM Instant WHERE SenderID='22' AND ReceiverID='6' OR SenderID='6' AND ReceiverID='22' ORDER BY 'MessID' ASC LIMIT 0 ,2

kann mir bitte wer helfen?

  1. hi

    DELETE FROM Instant WHERE SenderID='22' AND ReceiverID='6' OR SenderID='6' AND ReceiverID='22' ORDER BY 'MessID' ASC LIMIT 0 ,2

    da ich die datenfelder deiner tabelle nicht kenne, kann ich nur raten.

    afaik werden nur chars in '' gepackt...handlet es sich um zahlen nimmt man keine

    wenn du nach einem datenfeld ordnen willst sollte das afaik auch nciht in '' stehen.

    so long
    ole
    (8-)>

    --
    Ein Gedicht: Alles bleibt wie immer... nur schlimmer.
    sh:( fo:) ch:| rl:° br:& n4:° ie:% mo:} va:| de:] zu:| fl:( ss:) ls: js:|
    1. sorry, es handelt sich um mysql!
       die fehlermeldung lautet:
      You have an error in your SQL syntax near 'ORDER  BY  'MessID' ASC  LIMIT 0 ,
      2' at line 1

      "wie immer, oder?:-)"

      bibo

  2. DELETE FROM Instant WHERE SenderID='22' AND ReceiverID='6' OR SenderID='6' AND ReceiverID='22' ORDER BY 'MessID' ASC LIMIT 0 ,2

    Oi,

    welche Datenbank? Welche Fehlermeldung? Da Du keine Klammern setzt, besteht Deinerseits Klarheit bezüglich der Rangfolge der logischen Operatoren in der WHERE-Klausel?

    HTH Robert

    1. sorry, es handelt sich um mysql!
       die fehlermeldung lautet:
      You have an error in your SQL syntax near 'ORDER  BY  'MessID' ASC  LIMIT 0 ,
      2' at line 1

      "wie immer, oder?:-)"

      bibo

      1. Hi Bibo,

        You have an error in your SQL syntax near 'ORDER  BY  'MessID' ASC  LIMIT 0 ,
        2' at line 1

        was willst Du auch mit order by und limit in einer deleteanweisung?
        genau die sind das Problem.

        ciao
        romy

        1. warum?
          ich möchte einfach die anfänglichen 2 nachrichten oder wie auch immer geordnet nach der ID löschen!
          was ist da so komisch?
          irgendwie muss ich sie ja sortieren und limitieren!

          bibo?

          1. Oi,

            ich möchte einfach die anfänglichen 2 nachrichten oder wie auch immer geordnet nach der ID löschen!

            das "LIMIT 0,2" hatte ich gar nicht gesehen. LIMIT verlangt nach der Anzahl der zu löschenden Zeilen (in der von Dir vorgegebenen Ordnung). Mehr nicht.

            HTH Robert

            1. ich bekomm aber den fehler auch wenn ich nur LIMIT 2 sage!

              bibo

              1. Oi,

                Du hast ja auch noch nicht alle Fehler behoben. Siehe weiter oben...

                HTH Robert

                1. latest version:

                  DELETE  FROM Instant WHERE SenderID =  '22' AND ReceiverID =  '6' OR SenderID =  '6' AND ReceiverID =  '22' ORDER  BY MessID ASC  LIMIT 2

                  aber, selber fehler!!!

                  bibo

                  1. hi

                    DELETE FROM Instant WHERE SenderID =  '22' AND ReceiverID =  '6' OR SenderID =  '6' AND ReceiverID =  '22' ORDER  BY MessID ASC  LIMIT 2

                    ich vermute mal deine AND/OR statements sollten folgende syntax haben (damit es sinn macht):

                    DELETE FROM Instant WHERE (SenderID =  '22' AND ReceiverID =  '6') OR (SenderID =  '6' AND ReceiverID =  '22') ORDER  BY MessID ASC  LIMIT 2

                    sind SenderID & RecieverID char oder integer?

                    so long
                    ole
                    (8-)>

                    --
                    Ein Gedicht: Alles bleibt wie immer... nur schlimmer.
                    sh:( fo:) ch:| rl:° br:& n4:° ie:% mo:} va:| de:] zu:| fl:( ss:) ls: js:|
                    1. ich hab den fehler!!!!

                      es wird erst in dieser form mit mysql v. 4.0 unterstützt und ich habe eine 3.23.56 version!

                      bibo

                2. Oi,

                  stimmt denn die bezeichnung der spalte? (gross-, kleinschreibung)
                  einmal hast du hier messID und einmal MessID angegeben...

                  gruß.
                  roger.

                  1. jop weil mir phpmyadmin das immer ändert bei der ausgabe aber ich geb es schon richtig case-sensitive ein!

                    bibo

          2. Hi,

            ich möchte einfach die anfänglichen 2 nachrichten oder wie auch immer geordnet nach der ID löschen!
            was ist da so komisch?

            ist es nich irrelevant in welcher Reiehnfolge gelöscht wird?
            gelöscht ist gelöscht, wenn es trotzdem geht ist es ja okay.

            irgendwie muss ich sie ja sortieren und limitieren!

            warum? Beim Ausgeben vielleicht bzw. Du limitierst ja mit deiner where-Anweisung

            ciao
            romy

        2. Oi romy,

          was willst Du auch mit order by und limit in einer deleteanweisung?

          warum sollte er nicht eine begrenzte Anzahl von DS in einer gewünschten Ordnung löschen können? Sieht so aus, als gäbe die Syntax von MySQL das her.

          HTH Robert

          1. Servus,

            was willst Du auch mit order by und limit in einer deleteanweisung?

            warum sollte er nicht eine begrenzte Anzahl von DS in einer gewünschten Ordnung löschen können? Sieht so aus, als gäbe die Syntax von MySQL das her.

            Warum sollte er es nicht. Macht durchaus Sinn.
            Falls es die Version von MYSQl hergiebt würde ich es in einem subselect erschlagen.
            Ist nicht besser aber es klappt.

            Ebenfalls '' bei Spaltenangaben?!?
            Kann eigentlich nicht gut gehen.

            Gruss Matze

            PS. Ich würde behaupten order by + ASC sollte in einer delete anweisung gehen aber versteht das auch mysql?? Bitte nicht böse sein aber so manche Version von der DB kann ja nicht mal subselscts.

            1. warum sollte er nicht eine begrenzte Anzahl von DS in einer gewünschten Ordnung löschen können? Sieht so aus, als gäbe die Syntax von MySQL das her.

              Warum sollte er es nicht. Macht durchaus Sinn.
              Falls es die Version von MYSQl hergiebt würde ich es in einem subselect erschlagen. Ist nicht besser aber es klappt.

              AFAIK gibt es vor 4.1 keine Subselects. Warum auch in Erwägung ziehen, wenn die DELETE-Syntax für den vorliegenden Fall eine Lösung vorhält?

              Ebenfalls '' bei Spaltenangaben?!? Kann eigentlich nicht gut gehen.

              das hatten wir in dem Thread bereits ein Dutzend mal...

              PS. Ich würde behaupten order by + ASC sollte in einer delete anweisung gehen aber versteht das auch mysql??

              Wie? Wenn es in einer MySQL-Delete-Anweisung geht (also in MySQL syntaktisch korrekt ist), warum sollte MySQL es dann nicht verstehen? Oder verstehe _ich_ diesen Satz nicht?

              Bitte nicht böse sein aber so manche Version von der DB kann ja nicht mal subselscts.

              Gesteigerte Verwirrung meinerseits... Warum sollte ich böse sein? Wie gesagt, soweit ich weiß, stellt keine produktiv einsetzbare Version von MySQL Subselects zur Verfügung.

              HTH Robert

              1. Servus,

                PS. Ich würde behaupten order by + ASC sollte in einer delete anweisung gehen aber versteht das auch mysql??

                Wie? Wenn es in einer MySQL-Delete-Anweisung geht (also in MySQL syntaktisch korrekt ist), warum sollte MySQL es dann nicht verstehen? Oder verstehe _ich_ diesen Satz nicht?

                Fakt ist siehe andereren Post.... hie im thread lag es daran. die Version kann es nicht.

                Bitte nicht böse sein aber so manche Version von der DB kann ja nicht mal subselscts.

                Gesteigerte Verwirrung meinerseits... Warum sollte ich böse sein? Wie gesagt, soweit ich weiß, stellt keine produktiv einsetzbare Version von MySQL Subselects zur Verfügung.

                Musst nicht vwerwirrt sein, aber meines Wissen können es die neueren Version doch schon....Weis jedoch nicht ab welcher Version

                Gruss Matze

      2. Oi,

        You have an error in your SQL syntax near 'ORDER  BY  'MessID' ASC  LIMIT 0 ,
        2' at line 1

        sieht so aus, als hätte Ole Dir die richtige Antwort gegeben. ORDER BY verlangt nach Namen oder Nummer der zu ordnenden Spalte. Was ist das bei Dir?

        HTH Robert

        1. messID ist eine auto_incement nummer!
          nach der soll er sortieren!

          1. messID ist eine auto_incement nummer!

            Oi,

            hast Du die Antwort von Ole gelesen? Der letzte Hinweis? Der ORDER-BY-Klausel folgt ein Stringliteral, welches die Spalte bezeichnet. Was bezweckst Du mit den Hochkommata?

            HTH Robert

            1. hast Du die Antwort von Ole gelesen? Der letzte Hinweis? Der ORDER-BY-Klausel folgt ein Stringliteral, welches die Spalte bezeichnet. Was bezweckst Du mit den Hochkommata?

              HTH Robert

              doch doch!
              wenn ich Mysql selber ein select mit order by machne lasse, macht es auch die hochkomma! hab sie weggelassen und hat auch nicht funktioniert!

              bibo

              1. Der ORDER-BY-Klausel folgt ein Stringliteral, welches die Spalte bezeichnet. Was bezweckst Du mit den Hochkommata?

                doch doch!
                wenn ich Mysql selber ein select mit order by machne lasse, macht es auch die hochkomma! hab sie weggelassen und hat auch nicht funktioniert!

                Oi,

                daß es auch ohne Hochkommata noch nicht funktioniert, wird ja andernorts ausgiebig diskutiert.

                Aber etwas Grundsätzliches zur Syntaxfrage und Deiner Erfahrung mit dem SELECT-Statement: selbst wenn ein von Dir formuliertes Statement mit einem hochkommabegrenzten Spaltenbezeichner als Argument der ORDER-BY-Klausel scheinbar fehlerlos abgearbeitet wird, so würde ich daraus nicht den Schluß ziehen, daß diese Syntax damit auf alle derartigen Anwendungsfehler fehlerlos übertragbar ist. Fakt ist, daß in allen (mir bekannten) SQL-Versionen - allen voran die Definitionen des ANSI-SQL - der Spaltenbezeichner ein Stringliteral ist. Dann haben wir noch nicht über die Langzeitstabilität Deines Statements bei Versionsänderungen gesprochen. Deshalb: _keine_ Begrenzungszeichen.

                Sicherlich wirst Du mit einer strengen Einhaltung der dokumentierten Syntax eine sorgenfreieres Entwicklerleben haben, als wenn Du Dir eine eigene, verschrobene Es-ist-zwar-in-der-Doku-anders-beschrieben-aber-es-klappt-auch-so-Syntax aneignest. Die Tatsache, daß eine fehlerhafte Formulierung ein korrektes Ergebnis bringt, legitimiert nicht den Einsatz einer solchen Formulierung. Das gilt für Kodieren jeglicher Art.

                HTH Robert

  3. Hallo

    DELETE FROM Instant WHERE SenderID='22' AND ReceiverID='6' OR SenderID='6' AND ReceiverID='22' ORDER BY 'MessID' ASC LIMIT 0 ,2

    gehört das MessID wirklich in ' '?
    Gruß
    annA

    1. weiss nicht, aber mysql mach wenn es sortiert mit einem select auch welche!

      bibo