Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Mehrfach Update STatement (https://www.delphipraxis.net/201259-mehrfach-update-statement.html)

Ykcim 5. Jul 2019 13:32

Datenbank: MySQL • Version: 5 • Zugriff über: UniDac

Mehrfach Update STatement
 
Hallo Zusammen,

ich versuche mich gerade an einem Statement, mit dem ich mehrere Zeilen (hier im Beispiel 3 Zeilen) mit jeweil 3 Werten updaten möchte. Wenn ich das mit einzelnen SQL-Statements mache, wird die Procedure sehr langsam.

Folgendes habe ich gefunden, bzw. auf meinen Fall umgebaut:
Delphi-Quellcode:
update as400 set
  sequence = case
      when concat(waaunr,'-',waaupo) ='408216-0' and oaagnr =10 then 1
      when concat(waaunr,'-',waaupo) ='408217-0' and oaagnr =10 then 2
      when concat(waaunr,'-',waaupo) ='408218-0' and oaagnr =10 then 3
  end,
  frozen = case
      when concat(waaunr,'-',waaupo) ='408216-0' and oaagnr =10 then 1
      when concat(waaunr,'-',waaupo) ='408217-0' and oaagnr =10 then 1
      when concat(waaunr,'-',waaupo) ='408218-0' and oaagnr =10 then 0
  end,
  plan_date = case
      when concat(waaunr,'-',waaupo) ='408216-0' and oaagnr =10 then '2019-07-05'
      when concat(waaunr,'-',waaupo) ='408217-0' and oaagnr =10 then '2019-07-05'
      when concat(waaunr,'-',waaupo) ='408218-0' and oaagnr =10 then '2019-07-06'
  end
where concat(waaunr,'-',waaupo) in ('408216-0', '408217-0', '408218-0')
Aber leider habe ich das Problem, dass ich die Fehlermeldung "Column 'sequence' cannot be null" bekomme.

Wenn ich das richtig sehe, wird der Wert für die Spalten nicht erkannt.

Sieht jemand was ich falsch mache und kann mir jemand einen Tip geben?

Vielen Dank
Patrick

hoika 5. Jul 2019 14:07

AW: Mehrfach Update STatement
 
Hallo,
fehlt vielleicht ein else?

Ykcim 5. Jul 2019 14:13

AW: Mehrfach Update STatement
 
Ich habe soeben herausgefunden, dass es an den zwei Bedingungen liegt
Delphi-Quellcode:
when concat(waaunr,'-',waaupo) ='408216-0' and oaagnr ='10' then '1'
Hier mach er den Fehler

Delphi-Quellcode:
when concat(waaunr,'-',waaupo) ='408216-0' then '1'
Hier macht er den Fehler nicht.

Leider hilft es nicht, wenn ich eine Klammer um die beiden Bedingungen mache...
Delphi-Quellcode:
update as400 set
  sequence = case
      when (concat(waaunr,'-',waaupo) =408216-0 and oaagnr =10) then 1
      when (concat(waaunr,'-',waaupo) =408217-0 and oaagnr =10) then 2
      when (concat(waaunr,'-',waaupo) =408218-0 and oaagnr =10) then 3
  end,
  frozen = case
      when (concat(waaunr,'-',waaupo) =408216-0 and oaagnr =10) then 1
      when (concat(waaunr,'-',waaupo) =408217-0 and oaagnr =10) then 1
      when (concat(waaunr,'-',waaupo) =408218-0 and oaagnr =10) then 0
  end,
  plan_date = case
      when (concat(waaunr,'-',waaupo) =408216-0 and oaagnr =10) then '2019-07-05'
      when (concat(waaunr,'-',waaupo) =408217-0 and oaagnr =10) then '2019-07-05'
      when (concat(waaunr,'-',waaupo) =408218-0 and oaagnr =10) then '2019-07-06'
  end
where concat(waaunr,'-',waaupo) in (408216-0, 408217-0, 408218-0)
Hat jemand dazu eine Idee?

Vielen Dank
Patrick

hoika 5. Jul 2019 14:47

AW: Mehrfach Update STatement
 
Hallo,
welchen Fehler, diesen SQL-Fehler von oben?

oben steht
and oaagnr =10

und unten

and oaagnr ="10"

Welchen Datentyp hat oaagnr?

Ykcim 5. Jul 2019 14:49

AW: Mehrfach Update STatement
 
Ja, immernoch der Fehler: Column 'sequence' cannot be null

Habe oben auch noch die Lösung mit den Klammern hinzugefügt, die leider den gleichen Fehler ergibt...

Ich suche einen Weg, zwei Bedingungen in dem WHEN-Statement unter zu bekommen. Nehme ich das zweite (oaagnr=10) raus, funktioniert es...

hoika 5. Jul 2019 14:51

AW: Mehrfach Update STatement
 
Hallo,
zeig mal deine Klammern-Lösung.

Ykcim 5. Jul 2019 14:52

AW: Mehrfach Update STatement
 
OAAGNR ist ein Integer. Ich versuche gerade alle Varianten, die ich finden kann, daher der versehentliche Unterschied....

Die Fehlermeldung bleibt aber immer die gleiche
Column 'sequence' cannot be null

Ykcim 5. Jul 2019 14:52

AW: Mehrfach Update STatement
 
Delphi-Quellcode:
update as400 set
  sequence = case
      when (concat(waaunr,'-',waaupo) =408216-0 and oaagnr =10) then 1
      when (concat(waaunr,'-',waaupo) =408217-0 and oaagnr =10) then 2
      when (concat(waaunr,'-',waaupo) =408218-0 and oaagnr =10) then 3
  end,
  frozen = case
      when (concat(waaunr,'-',waaupo) =408216-0 and oaagnr =10) then 1
      when (concat(waaunr,'-',waaupo) =408217-0 and oaagnr =10) then 1
      when (concat(waaunr,'-',waaupo) =408218-0 and oaagnr =10) then 0
  end,
  plan_date = case
      when (concat(waaunr,'-',waaupo) =408216-0 and oaagnr =10) then '2019-07-05'
      when (concat(waaunr,'-',waaupo) =408217-0 and oaagnr =10) then '2019-07-05'
      when (concat(waaunr,'-',waaupo) =408218-0 and oaagnr =10) then '2019-07-06'
  end
where concat(waaunr,'-',waaupo) in (408216-0, 408217-0, 408218-0)

hoika 5. Jul 2019 14:58

AW: Mehrfach Update STatement
 
Hallo,
when concat(waaunr,'-',waaupo) ='408216-0' and oaagnr =1 then '1'

Du hast bei 408216-0 die Hochkommas vergessen.

Ykcim 5. Jul 2019 15:01

AW: Mehrfach Update STatement
 
Ich habe es jetzt so:
Delphi-Quellcode:
update as400 set
  sequence = case
      when (concat(waaunr,'-',waaupo) ='408216-0' and oaagnr =10) then '1'
      when (concat(waaunr,'-',waaupo) ='408217-0' and oaagnr =10) then '2'
      when (concat(waaunr,'-',waaupo) ='408218-0' and oaagnr =10) then '3'
  end,
  frozen = case
      when (concat(waaunr,'-',waaupo) ='408216-0' and oaagnr =10) then '1'
      when (concat(waaunr,'-',waaupo) ='408217-0' and oaagnr =10) then '1'
      when (concat(waaunr,'-',waaupo) ='408218-0' and oaagnr =10) then '0'
  end,
  plan_date = case
      when (concat(waaunr,'-',waaupo) ='408216-0' and oaagnr =10) then '2019-07-05'
      when (concat(waaunr,'-',waaupo) ='408217-0' and oaagnr =10) then '2019-07-05'
      when (concat(waaunr,'-',waaupo) ='408218-0' and oaagnr =10) then '2019-07-06'
  end
where concat(waaunr,'-',waaupo) in ('408216-0', '408217-0', '408218-0')
und so versucht
Delphi-Quellcode:
update as400 set
  sequence = case
      when (concat(waaunr,'-',waaupo) ='408216-0' and oaagnr =10) then 1
      when (concat(waaunr,'-',waaupo) ='408217-0' and oaagnr =10) then 2
      when (concat(waaunr,'-',waaupo) ='408218-0' and oaagnr =10) then 3
  end,
  frozen = case
      when (concat(waaunr,'-',waaupo) ='408216-0' and oaagnr =10) then 1
      when (concat(waaunr,'-',waaupo) ='408217-0' and oaagnr =10) then 1
      when (concat(waaunr,'-',waaupo) ='408218-0' and oaagnr =10) then 0
  end,
  plan_date = case
      when (concat(waaunr,'-',waaupo) ='408216-0' and oaagnr =10) then '2019-07-05'
      when (concat(waaunr,'-',waaupo) ='408217-0' and oaagnr =10) then '2019-07-05'
      when (concat(waaunr,'-',waaupo) ='408218-0' and oaagnr =10) then '2019-07-06'
  end
where concat(waaunr,'-',waaupo) in ('408216-0', '408217-0', '408218-0')
und so
Delphi-Quellcode:
update as400 set
  sequence = case
      when concat(waaunr,'-',waaupo) ='408216-0' and oaagnr =10 then 1
      when concat(waaunr,'-',waaupo) ='408217-0' and oaagnr =10 then 2
      when concat(waaunr,'-',waaupo) ='408218-0' and oaagnr =10 then 3
  end,
  frozen = case
      when concat(waaunr,'-',waaupo) ='408216-0' and oaagnr =10 then 1
      when concat(waaunr,'-',waaupo) ='408217-0' and oaagnr =10 then 1
      when concat(waaunr,'-',waaupo) ='408218-0' and oaagnr =10 then 0
  end,
  plan_date = case
      when concat(waaunr,'-',waaupo) ='408216-0' and oaagnr =10 then '2019-07-05'
      when concat(waaunr,'-',waaupo) ='408217-0' and oaagnr =10 then '2019-07-05'
      when concat(waaunr,'-',waaupo) ='408218-0' and oaagnr =10 then '2019-07-06'
  end
where concat(waaunr,'-',waaupo) in ('408216-0', '408217-0', '408218-0')
Leider ist die Fehlermeldung immer die gleiche: Column 'sequence' cannot be null


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:37 Uhr.
Seite 1 von 4  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz