Update einer Spalte mit Wert aus anderer Tabelle

reitzstephan

Neuer Benutzer
Beiträge
2
Hallo, guten Morgen!

Ich habe mal eine Frage an die Cracks hier :)

Zunächst mein Szenario:
Zwei Tabellen

Tabelle Nr. 1
Alle Schüler (1700 Einträge)

"SchülerNr" ist der Primärschlüssel (Integer)

Es gibt eine Spalte "Familienstand", dort steht allerdings immer NULL drin.

Tabelle Nr. 2
Gemeinsame Datenerfassung (300 Einträge)

"Schueler_Nr" ist der Primärschlüssel (Integer)
Es gibt eine Spalte "Familienstand", die ist jedoch vollständig gefüllt (verheiratet, geschieden, verwitwet, ledig)

Was ich nun möchte ist, dass in die Zeilen von Tabelle 1, für die ein Datensatz in Tabelle 2 existiert (über die TeilnehmerNr ja feststellbar), in die Spalte "Familienstand" der Wert aus der Tabelle 2 rein geschrieben wird.

Schritt1: als Klartext, also exakt der Text, wie in Tabelle 2
Schritt2: besser "lookup-fähig", also falls verheiratet = 1, geschieden = 2 usw.

Mein TSQL statement mosert mir den Fehler 4101 Ebene 16 an.
Habe daher erst einmal das reine select probiert:

select familienstand from [Alle Schüler] as allschueler where [gemeinsame Datenerfassung].[schueler_nr]=[allschueler].[SchülerNr]

Eigentlich müsste ich sowas in der Art haben:

update [Alle Schüler] set Familienstand = (select familienstand from [gemeinsame Datenerfassung].[familienstand] where [Alle Schüler].[SchülerNr] = [Gemeinsame Datenerfassung].Schueler_nr])

Für Tipps wäre ich sehr dankbar!

Grüße
Stephan Reitz
 
Werbung:
AW: Update einer Spalte mit Wert aus anderer Tabelle

Hallo reitzstephan,

versuch es mal so:

Code:
UPDATE Tabelle1
 SET Familienstand =
  CASE 
   WHEN T2.Familienstand='verheiratet' THEN '1'
   WHEN T2.Familienstand='geschieden' THEN '2'
   WHEN T2.Familienstand='verwitwet' THEN '3'
   WHEN T2.Familienstand='ledig' THEN '4'
  END
 FROM Tabelle1 AS T1, Tabelle2 AS  T2
 WHERE T1.SchülerNr=T2.SchülerNr

Das Update verwendet ein JOIN der beiden Tabellen um den Famielienstand zur richtigen ID einzutragen.

Zur Zeit wird noch Text in die Familienstand-Spalte von Tabelle1 geschrieben. Das kann man aber duch entfernen der Hochkommata auf Int ändern.

Ich habe die Abfrage noch nicht getestet. Sollte aber funktionieren.

Gruß Charly
 
AW: Update einer Spalte mit Wert aus anderer Tabelle

Hallo Charly,

ich danke Dir vielmals! Das funktioniert super.

Mein Problem war, dass laut mehrteiligem Bezeichner und Aliaskennung nicht unterschieden werden kann, da beide den Punkt als Trennzeichen haben, oder?

Besten Dank, hast mir viel Arbeit abgenommen!

Gruß
 
Werbung:
AW: Update einer Spalte mit Wert aus anderer Tabelle

Hallo,

wenn du einen Alias angibst musst du ihn auch verwenden.

In diesem Fall musst du einen Alias für Tabelle1 im FROM-Teill benutzen da die Tabelle zweimal verwendet wird (Einmal beim UPDATE und einmal beim JOIN). Das System muss die Tabellen auseinanderhalten können.

Gruß Charly
 
Zurück
Oben