AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Mehrfach Update STatement

Ein Thema von Ykcim · begonnen am 5. Jul 2019 · letzter Beitrag vom 9. Jul 2019
 
Delphi.Narium

Registriert seit: 27. Nov 2017
2.552 Beiträge
 
Delphi 7 Professional
 
#13

AW: Mehrfach Update STatement

  Alt 8. Jul 2019, 13:25
Case when funktioniert auch ohne Else und zwar ohne Syntaxfehler. Welchen Syntaxfehler erhältst Du denn?

Was mir schleierhaft ist:
SQL-Code:
update as400 set
  sequence = case
      when (concat(waaunr,'-',waaupo) ='408216-0and oaagnr =10) then 1
      when (concat(waaunr,'-',waaupo) ='408217-0and oaagnr =10) then 2
      when (concat(waaunr,'-',waaupo) ='408218-0and oaagnr =10) then 3
      else 0
  end,
  frozen = case
      when (concat(waaunr,'-',waaupo) ='408216-0and oaagnr =10) then 1
      when (concat(waaunr,'-',waaupo) ='408217-0and oaagnr =10) then 1
      when (concat(waaunr,'-',waaupo) ='408218-0and oaagnr =10) then 0
      else 0
  end,
  plan_date = case
      when (concat(waaunr,'-',waaupo) ='408216-0and oaagnr =10) then '2019-07-05'
      when (concat(waaunr,'-',waaupo) ='408217-0and oaagnr =10) then '2019-07-05'
      when (concat(waaunr,'-',waaupo) ='408218-0and oaagnr =10) then '2019-07-06'
      else '000-00-00'
  end
where concat(waaunr,'-',waaupo,'-',oaagnr) in ('408216-0-10', '408217-0-10', '408218-0-10')
Im where setzt du 3 Werte per Concat zusammen, im When zwei und den dritten fügst Du per and hinzu.

Warum, wo ist da der sittliche Nährwert? Es sind doch letztlich die gleichen Wertkombinationen abzufragen.

So wäre es dann schon etwas konsequenter:
SQL-Code:
update as400 set
  sequence = case
      when (concat(waaunr,'-',waaupo,'-',oaagnr) = '408216-0-10') then 1
      when (concat(waaunr,'-',waaupo,'-',oaagnr) = '408217-0-10') then 2
      when (concat(waaunr,'-',waaupo,'-',oaagnr) = '408218-0-10') then 3
      else 0
  end,
  frozen = case
      when (concat(waaunr,'-',waaupo,'-',oaagnr) = '408216-0-10') then 1
      when (concat(waaunr,'-',waaupo,'-',oaagnr) = '408217-0-10') then 1
      when (concat(waaunr,'-',waaupo,'-',oaagnr) = '408218-0-10') then 0
      else 0
  end,
  plan_date = case
      when (concat(waaunr,'-',waaupo,'-',oaagnr) ='408216-0-10') then '2019-07-05'
      when (concat(waaunr,'-',waaupo,'-',oaagnr) ='408217-0-10') then '2019-07-05'
      when (concat(waaunr,'-',waaupo,'-',oaagnr) ='408218-0-10') then '2019-07-06'
      else '000-00-00'
  end
where concat(waaunr,'-',waaupo,'-',oaagnr) in ('408216-0-10', '408217-0-10', '408218-0-10')
Oder auch so:
SQL-Code:
update as400 set
  sequence = case
      when waaunr = '408216and waaupo = 0 and oaagnr = 10 then 1
      when waaunr = '408217and waaupo = 0 and oaagnr = 10 then 2
      when waaunr = '408218and waaupo = 0 and oaagnr = 10 then 3
      else 0
  end,
  frozen = case
      when waaunr = '408216and waaupo = 0 and oaagnr = 10 then 1
      when waaunr = '408217and waaupo = 0 and oaagnr = 10 then 1
      when waaunr = '408218and waaupo = 0 and oaagnr = 10 then 0
      else 0
  end,
  plan_date = case
      when waaunr = '408216and waaupo = 0 and oaagnr = 10 then '2019-07-05'
      when waaunr = '408217and waaupo = 0 and oaagnr = 10 then '2019-07-05'
      when waaunr = '408217and waaupo = 0 and oaagnr = 10 then '2019-07-06'
      else '0000-00-00'
  end
where waaunr in ('408216', '408217', '408218') and waaupo = 0 and oaagnr = 10
Die von Dir bisher gewählte Variante hätte ich früher höchstwahrscheinlich nicht durch den Test und die Qualitätssicherung bekommen, da bei ihr potenziell Datensätze geändert werden könnten, die nicht geändert werden dürfen. Und genau diese Fehlermöglichkeit war ja überhaupt erst der Grund, weshalb Du diesen Thread eröffnet hast.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz