none
update SQL: Der mehrteilige Bezeichner konnte nicht gebunden werden RRS feed

  • Frage

  • Hallo zusammen,

    ich habe versucht ein Update über ein innerJoin zu erstellen, erhalte aber die oben genannte Fehlermeldung. Was ist am SQL-Statement falsch?

    update [Test-100-VERTRIEB]
           set V.Gesamtpreis = V.Gesamtpreis * W.Briefkurs
           from  [Test-100-VERTRIEB] AS V inner join Wechselkurse AS W
           on W.date = V.Belegdatum and V.Waehrung = W.Waehrung

    Ziel ist den Gesamtpreis umzurechnen wenn in der Währungskenner und das Belegdatum in den Vertriebslegen übereinstimmt. Der Eintrag 0 exisitiert in der Wechselkurstabelle nicht und soll nicht umgerechnet werden. Vielen Dank.

    Gruß Chris 

    Dienstag, 3. Mai 2016 13:13

Antworten

  • Hallo,

    beim Verwenden eines Alias in einem UPDATE gilt entweder oder:

           -- Auf Alias für UPDATE Ziel verzichten
           update [Test-100-VERTRIEB]
           set Gesamtpreis = V.Gesamtpreis * W.Briefkurs
           from  [Test-100-VERTRIEB] inner join Wechselkurse AS W
           on W.date = [Test-100-VERTRIEB].Belegdatum and [Test-100-VERTRIEB].Waehrung = W.Waehrung

    oder

           -- Alias durchgängig verwenden, auch bei UPDATE
           update V
           set V.Gesamtpreis = V.Gesamtpreis * W.Briefkurs
           from  [Test-100-VERTRIEB] AS V inner join Wechselkurse AS W
           on W.date = V.Belegdatum and V.Waehrung = W.Waehrung

    Wobei ich auf Aliase bei dem UPDATE selbst i. a. verzichte, da dabei die Zieltabelle schwieriger findet, wenn das ganze SQL länger ist, wie meistens ;)

    Gruß Elmar


    Dienstag, 3. Mai 2016 13:47
    Beantworter

Alle Antworten

  • Hallo,

    beim Verwenden eines Alias in einem UPDATE gilt entweder oder:

           -- Auf Alias für UPDATE Ziel verzichten
           update [Test-100-VERTRIEB]
           set Gesamtpreis = V.Gesamtpreis * W.Briefkurs
           from  [Test-100-VERTRIEB] inner join Wechselkurse AS W
           on W.date = [Test-100-VERTRIEB].Belegdatum and [Test-100-VERTRIEB].Waehrung = W.Waehrung

    oder

           -- Alias durchgängig verwenden, auch bei UPDATE
           update V
           set V.Gesamtpreis = V.Gesamtpreis * W.Briefkurs
           from  [Test-100-VERTRIEB] AS V inner join Wechselkurse AS W
           on W.date = V.Belegdatum and V.Waehrung = W.Waehrung

    Wobei ich auf Aliase bei dem UPDATE selbst i. a. verzichte, da dabei die Zieltabelle schwieriger findet, wenn das ganze SQL länger ist, wie meistens ;)

    Gruß Elmar


    Dienstag, 3. Mai 2016 13:47
    Beantworter
  • Hallo Elmar,

    vielen Dank für die Antwort, die durchgängige Verwendung des ALIAS hat funktioniert.

    Gruß Chris

    Dienstag, 3. Mai 2016 15:07