Ankündigung

Einklappen
Keine Ankündigung bisher.

Was ist falsch

Einklappen

Neue Werbung 2019

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

  • Was ist falsch

    Ich wünsche allen einen guten Sonntag Morgen!
    Mich quält seid einigen Tagen folgendes Problem an einer MySQL Abfrage:
    MySQL meldet:
    Code:
    You have an error in your SQL syntax; check the manual that corresponds to your
     MySQL server version for the right syntax to use near
     'IF EXISTS (SELECT * FROM reisen WHERE id_REISEN=0)
    BEGIN 
    UPDATE reisen SET Re' at line 1
    Der Code/Abfrage sieht so aus:
    Code:
    IF EXISTS (SELECT * FROM reisen WHERE id_REISEN=0)
    BEGIN 
    UPDATE reisen 
       SET ReiseName='bert', StartDatum='2008-06-19', EndeDatum='2008-06-28' 
       WHERE id_REISEN=0
    END
    ELSE
    BEGIN 
    INSERT INTO reisen (ReiseName, StartDatum, EndeDatum) 
       VALUES ('bert', '2008-06-19', '2008-06-28')
    END
    Ich weiß nicht wo hier das Problem ist, na gut ich bin auch nur ein Laie aber ich meine alles richtig gemacht zu haben. Die Anweisungen SELECT, UPDATE und INSERT funktionieren alleine wunderbar. Wenn ich sie jedoch in eine IF- EXISTS-Anweisung einbaue bekomme ich die obere Meldung.
    Bitte helft mir.
    Gruß Tipetan


  • #2
    Hallo tipetan,

    mir kommt diese Abfrage etwas suspekt vor. Lies dich mal in MySQL :: MySQL 5.1 Referenzhandbuch :: 19.2.10.1 IF-Anweisung und MySQL :: MySQL 5.1 Reference Manual :: 21.2.1 CREATE PROCEDURE and CREATE FUNCTION Syntax ein.
    Viele Grüße,
    Dr.E.

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    1. Think about software design before you start to write code!
    2. Discuss and review it together with experts!
    3. Choose good tools (-> Adventure PHP Framework (APF))!
    4. Write clean and reusable software only!
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Kommentar


    • #3
      Danke für die Antwort dr.e.-new vbmenu_register("postmenu_11017", true); !
      Habe mir die Hilfe angesehen und das was meiner Meinung nach noch fehlte war ein End If. Klappt aber immer noch nicht.
      Vieleicht kannst du mir die SQL-Anweisung nennen mit der ich das Problem lösen könnte.
      1. überprüfe ob in der Tabelle reisen ein Datensatz mit id_Reisen vorhanden ist
      2. Falls ja: führe ein UPDATE an dem entsprechendem Datensatz durch!
      3. Falls nein: füge mit INSERT einen neuen Datensatz ein.
      Bin ganz gespannt.
      Werde am Abend mal nachsehen ob was gekommen ist. Das Supper Wetter muß jetzt genutzt werden. Ich Danke Dir.

      Kommentar


      • #4
        In diesem Fall könnte schon ein einfaches INSERT ... ON DUPLICATE KEY UPDATE ... reichen:

        MySQL :: MySQL 5.1 Referenzhandbuch :: 13.2.4.3 INSERT ... ON DUPLICATE KEY UPDATE
        Create your own quiz show.

        Kommentar


        • #5
          Schönen guten Montag Morgen!
          Die Anweisung war neu für mich. Danke.
          Habe mir gedanken gemacht wie ich das Problem angehen könnte, leider funzt das bei mir nicht, weil ich den Primärschlüssel automatisch vergebe und der PS ist keiner meiner einzutragenden Werte ist.

          ...Wenn Sie ON DUPLICATE KEY UPDATE angeben und ein Datensatz eingefügt wird, der einen doppelten Wert in einem eindeutigen Index oder einem Primärschlüssel erzeugen würde, dann wird für den alten Datensatz UPDATE ausgeführt. ...
          die Anweisung sah bei mir so aus:
          Code:
          INSERT INTO reisen (ReiseName, StartDatum, EndeDatum) VALUES ('bertttt', '2008-06-02', '2008-06-28')
          ON DUPLICATE KEY UPDATE ReiseName='bertttt', StartDatum='2008-06-02', EndeDatum='2008-06-28'
          Meine Werte in den Spalten können mehrfach verwendent werden.
          • ReiseName="Herrenurlaub2008"
            einmal fährt Gruppe A auf diese Reise und Gruppe B erholt sich unter dem gleichen Namen auf einer anderen Reise.
            Werte nicht eindeutig
          • StartDatum="11.06.2008", "14.06.2008"
            Gruppe A fährt am 11. los und Gruppe B am 14.
            In diesem Fall ok, könnte aber auch anders aus sehen.
          • EndeDatum="21.06.2008", "21.06.2008"
            Gruppe A und Gruppe B kommen am gleichen Tag zurück
            Werte sind nicht eindeutig
          • Die Reisen unterscheiden sich an der id_REISEN die Automatisch vergeben werden.
          Aus diesem Grunde würde ich nochmal auf die if-Anweisung zurückkommen.
          Kannst du mir da weiterhelfen?
          Danke

          Kommentar

          Lädt...
          X