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
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
804 Beiträge
 
Delphi 10.4 Sydney
 
#1

Mehrfach Update STatement

  Alt 5. Jul 2019, 13:32
Datenbank: MySQL • Version: 5 • Zugriff über: UniDac
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-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
  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
  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'
  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
Patrick
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Mehrfach Update STatement

  Alt 5. Jul 2019, 14:07
Hallo,
fehlt vielleicht ein else?
Heiko
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
804 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Mehrfach Update STatement

  Alt 5. Jul 2019, 14:13
Ich habe soeben herausgefunden, dass es an den zwei Bedingungen liegt
when concat(waaunr,'-',waaupo) ='408216-0and oaagnr ='10then '1' Hier mach er den Fehler

when concat(waaunr,'-',waaupo) ='408216-0then '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
Patrick

Geändert von Ykcim ( 5. Jul 2019 um 14:48 Uhr)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Mehrfach Update STatement

  Alt 5. Jul 2019, 14:47
Hallo,
welchen Fehler, diesen SQL-Fehler von oben?

oben steht
and oaagnr =10

und unten

and oaagnr ="10"

Welchen Datentyp hat oaagnr?
Heiko
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
804 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Mehrfach Update STatement

  Alt 5. Jul 2019, 14:49
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...
Patrick
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Mehrfach Update STatement

  Alt 5. Jul 2019, 14:51
Hallo,
zeig mal deine Klammern-Lösung.
Heiko
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
804 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Mehrfach Update STatement

  Alt 5. Jul 2019, 14:52
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
Patrick
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
804 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Mehrfach Update STatement

  Alt 5. Jul 2019, 14:52
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)
Patrick
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Mehrfach Update STatement

  Alt 5. Jul 2019, 14:58
Hallo,
when concat(waaunr,'-',waaupo) ='408216-0' and oaagnr =1 then '1'

Du hast bei 408216-0 die Hochkommas vergessen.
Heiko
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
804 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Mehrfach Update STatement

  Alt 5. Jul 2019, 15:01
Ich habe es jetzt so:
Delphi-Quellcode:
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'
  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'
  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'
  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-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
  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
  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'
  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-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
  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
  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'
  end
where concat(waaunr,'-',waaupo) in ('408216-0', '408217-0', '408218-0')
Leider ist die Fehlermeldung immer die gleiche: Column 'sequence' cannot be null
Patrick
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


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 04:49 Uhr.
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