1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Update einer Spalte mit Wert aus anderer Tabelle

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von reitzstephan, 15 Dezember 2010.

  1. reitzstephan

    reitzstephan Neuer Benutzer

    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
     
  2. Charly

    Charly Datenbank-Guru

    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
     
  3. reitzstephan

    reitzstephan Neuer Benutzer

    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ß
     
  4. Charly

    Charly Datenbank-Guru

    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
     

Diese Seite empfehlen