Anmelden

View Full Version : SQL UPDATE mit Feldabfrage und Verschachtelung



Seiten : [1] 2

XMan
11-03-14, 10:01
Hallo Zusammen,

stehe wieder mal vor einem SQL Thema.

Ich möchte gerne zwei Feldwerte in eine DB speichern wenn wenn die Felder leer sind.
Sind die Felder nicht leer so sollten diese Werte in die nächsten Felder (gleicher Satz) gespeichert werden. Sind diese auch schon belegt, dann eben in die nächsten Felder usw.

Beispiel Satzaufbau:
Person, Feld1, Feld2, Feld3, Feld4, Feld5, Feld6, Feld7, Feld8

Nun zu meinem Update, sind Feld1 und Feld2 leer dann diese befüllen, sind diese belegt dann Feld3 und Feld4 befüllen, sind diese auch schon belegt dann Feld5 und Feld6 belegen usw.

ist das einfach machbar oder wird dies kompliziert?

Danke!!

andreaspr@aon.at
11-03-14, 12:03
Du könntest dir folgendes basteln:

Update Tab1 set
Feld1 = Case When Feld1 = '' then 'Neuer Wert' else Feld1 end,
Feld3 = Case When Feld1 <> '' then 'Neuer Wert' else Feld3 end, ...

lg Andreas

Fuerchau
11-03-14, 12:15
So einfach ist es leider nicht!
Wenn alles leer ist, wird alles gefüllt.
Es wird schon etwas Komplizierter:

f1 = case f1 when '' then 'Neu' else f1 end,
f2 = case when f1<>'' and f2='' then 'neu' else f2 end,
f3 = case when f1<>'' aand f2<>'' and f3='' then 'neu' else f3 end,
:
:

BenderD
11-03-14, 12:24
Hallo Zusammen,

stehe wieder mal vor einem SQL Thema.

Ich möchte gerne zwei Feldwerte in eine DB speichern wenn wenn die Felder leer sind.
Sind die Felder nicht leer so sollten diese Werte in die nächsten Felder (gleicher Satz) gespeichert werden. Sind diese auch schon belegt, dann eben in die nächsten Felder usw.

Beispiel Satzaufbau:
Person, Feld1, Feld2, Feld3, Feld4, Feld5, Feld6, Feld7, Feld8

Nun zu meinem Update, sind Feld1 und Feld2 leer dann diese befüllen, sind diese belegt dann Feld3 und Feld4 befüllen, sind diese auch schon belegt dann Feld5 und Feld6 belegen usw.

ist das einfach machbar oder wird dies kompliziert?

Danke!!

Schon mal was von erster Normalform gehört?

XMan
11-03-14, 14:53
So einfach ist es leider nicht!
Wenn alles leer ist, wird alles gefüllt.
Es wird schon etwas Komplizierter:

f1 = case f1 when '' then 'Neu' else f1 end,
f2 = case when f1<>'' and f2='' then 'neu' else f2 end,
f3 = case when f1<>'' aand f2<>'' and f3='' then 'neu' else f3 end,
:
:

Danke!!
That´s it!

So habe ich mir das vorgestellt.

SG

XMan
11-03-14, 14:54
Schon mal was von erster Normalform gehört?

nö, hab ich mir noch nicht angesehen.

KingofKning
12-03-14, 07:19
Mal ganz ehrlich.Es motiviert einen nicht wirklich zu antworten, wenn der Fragesteller offen bekennt das er das Handwerkszeug für seinen Job nicht kennt.Und Normierung einer Datenbank sind wirklich Grundlagen...Mag am Alter liegen das ich das so sehe, aber da die meisten ähnlich alt sind werden sie vermutlich ähnlich denken..... GG

Robi
12-03-14, 07:34
Mal ganz ehrlich.Es motiviert einen nicht wirklich zu antworten, wenn der Fragesteller offen bekennt das er das Handwerkszeug für seinen Job nicht kennt.Und Normierung einer Datenbank sind wirklich Grundlagen...Mag am Alter liegen das ich das so sehe, aber da die meisten ähnlich alt sind werden sie vermutlich ähnlich denken..... GG

Volle zustimmung eines 49,5 jährigen!

Wobei ich 'Nicht kennen' nicht schlimm finde, 'nicht kennen wollen' sehrwohl!

andreaspr@aon.at
12-03-14, 08:03
@KingofKning: Sorry, aber alles ok bei dir?? Es kann doch nicht sein, dass wenn jemand zugibt etwas nicht zu wissen, gleich darauf los geht!
Es ist absolut OK wenn man (so wie Bender) Hinweise gibt wie es eigentlich richtig gemacht gehört. Jedoch destruktive Beiträge fördern nicht gerade die Zukunft dieses Forums.
Ich habe schon einige Kollegen oder Schüler kennen gelernt, die sich nicht trauen eine Frage zu schreiben, genau aus diesen Gründen.

Sorry nochmal, aber das musste jetzt mal (für alle) gesagt werden.

Fuerchau
12-03-14, 08:09
Wenn man mit "Alt"-Anwendungen zu tun hat, so ist dort nachträglich eine Normierung einzuführen vollkommen unmöglich. Schließlich sind davon meist viele Programme betroffen.
Allerdings frage ich mich, warum in der DB2/400 Array-Felder (was andere DB's schon länger haben) eingeführt wurden, die doch absolut gegen Normierung sprechen.