Announcement

Collapse
No announcement yet.

Update mit Inner join und where clause

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

  • Update mit Inner join und where clause

    Hallo zusammen,

    ich habe folgenden select:
    Code:
    update v3grdssv
    set dssv_mob_life_mobi = '1', dssv_mob_life_warr = '1' 
    from v3grdssv as dssv
    inner join v3grdsbl as dsbl 
    on dssv.dssv_whc = dsbl.dsbl_whc 
    and dssv.dssv_fin = dsbl.dsbl_fin 
    and dssv.dssv_service_id = dsbl.dsbl_service_id
    where dsbl_dlr_Cd in ('51510','52301','54109','54201','52511','52703','54901','54601',
    '82101',	'55501',	'52901', '52902', '52903',	'54731',		'53901') and
     dsbl_service_date between '2009-11-08' and '2009-12-02' and dsbl_country_cd = '00000'
    and dssv_mob_life_mobi = '0' and dssv_mob_life_warr = '0';
    Dieser soll die beiden mob felder auf 1 setzten wenn die Bedingungen erfüllt sind.

    Doch leider bekomme ich diese Fehlermeldung beim Ausführen des statements:

    An unexpected token "'1'" was found following "dssv_mob_life_warr =". Expected tokens may include: "(".
    [SQL State: 42601]

    Hat hierzu vllt jemand eine Idee was falsch sein könnte.

    Viele Dank
    Gruß

  • #2
    Hallo,

    die Fehlermeldung verwirrt natürlich, aber es ist klar, dass das DBMS durcheinander kommt. Bei einem UPDATE-Befehl darf es nach den SET-Zuweisungen nur noch WHERE geben; wenn zwischendurch ein FROM kommt, kann das nur mit einem eingebundenen SELECT als Ersatz für den Wert zusammenhängen (deshalb wird "1" abgelehnt), und das muss offensichtlich in Klammern gesetzt werden:
    Expected tokens may include: "(".
    Mir ist freilich schleierhaft, was ein JOIN beim UPDATE zu suchen hat.

    Vielleicht solltest du auch die SQL-Schlüsselwörter groß schreiben und sinnvoll einrücken, damit besser zu erkennen ist, was wie zusammengehört.

    Gruß Jürgen

    Comment


    • #3
      Bei einem UPDATE-Befehl darf es nach den SET-Zuweisungen nur noch WHERE geben
      Das kann man so allgemein nicht sagen, der Sql Server unterstützt die Syntax durchaus und für den ist das Sql Statement gültig.
      Siehe MSDN zu Update.

      Es hängt halt von der verwendeten und hier nicht erwähnten DBMS ab.
      Olaf Helper

      <Blog> <Xing>
      * cogito ergo sum * errare humanum est * quote erat demonstrandum *
      Wenn ich denke, ist das ein Fehler und das beweise ich täglich

      Comment


      • #4
        Hallo,
        Originally posted by O. Helper View Post
        ...der Sql Server unterstützt die Syntax durchaus und für den ist das Sql Statement gültig.
        Das kann man so auch nicht sagen. Erstens gibt es DEN SQL-Server nicht (auch wenn MS den eigenen "Microsoft SQL Server" gerne als solchen sehen würde) und pauschalisiert für alle Datenbank-Server die dem Kriterium SQL-Server entsprechen gilt diese Aussage nicht.

        Gruß Falk
        Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

        Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

        Comment


        • #5
          Irgendwie schüttelts mich bei dem Gedanken auf nen Join ein update zu machen...

          Comment


          • #6
            Originally posted by fanderlf View Post
            Irgendwie schüttelts mich bei dem Gedanken auf nen Join ein update zu machen...
            Die Nutzer der Klitzeklein-Software sind Elend gewöhnt ...
            Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

            Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

            Comment


            • #7
              Das Update erfolgt ja nicht auf das Join, sondern auf die Tabelle.
              Das Join dient nur zum Einschränken der Menge; etwas eleganter als Subselects zu arbeiten.

              Übrigens, es heisst WinzigWeich, nicht KlitzeKlein .
              Olaf Helper

              <Blog> <Xing>
              * cogito ergo sum * errare humanum est * quote erat demonstrandum *
              Wenn ich denke, ist das ein Fehler und das beweise ich täglich

              Comment


              • #8
                Ach so. Dann gilt aber mein Zusatzwunsch: Schlüsselwörter groß, sinnvoll einrücken und zusätzlich mit Klammern arbeiten. Jürgen

                Comment

                Working...
                X