2016-03-25 26 views
1

Dies ist meine Situation:SQL Server neue Spalte zu aktualisieren, basierend auf einer anderen Spalte aus einer anderen Tabelle

Hinweis: Spalte (NUMBER_IDENTITY) auf 2 Tabellen haben den gleichen Wert aber die 2-Tabelle keine Beziehung zueinander haben (dies ist meine Wahl für meine Situation)

Frühe Datenbank Zustand

  • ich hatte Tabelle CONTRACTS (ID, NUMBER_IDENTITY, BENUTZER_ID)
  • Ich hatte Tabelle SUB_CONTRACTS (ID, NUMBER_IDENTITY)

JETZT

Ich habe Tabelle CONTRACTS (ID, NUMBER_IDENTITY, BENUTZER_ID)

ich hinzufügen neue Spalte in SUB_CONTRACTS (ID, NUMBER_IDENTITY , USER_ID)

Mein Problem

Ich sollte USER_ID Spalte in SUB_CONTRACTS mit dem gleichen Wert aktualisieren, der in CONTRACTS existiert. Ich kann dieses Update tun, weil NUMBER_IDENTITY Spalte der beiden Tabellen identisch ist. So SUB_CONTRACT ist komplementär von CONTRACT.

Frage

Wie eine Funktion, Prozedur oder Abfrage in SQL Server erstellen, die mein Problem lösen? Kann ich eine Funktion erstellen, die alle Spalten aktualisiert, die diese Bedingung erfüllen? Ich kann in Mini-Lösung mit Abfrage lösen, aber ich kann nicht alle diese Mini-Abfrage beitreten, um mein Problem zu lösen.

+1

Freie Hand, aber ein einfaches Update + Join a'la 'UPDATE sc SET sc.user_id = c.user_id VON sub_contracts sc JOIN Verträge c ON sc.number_identity = c.number_identity sollte es tun. Frage ist jedoch, warum speichern Sie die Benutzer-ID an einem zusätzlichen Ort, wenn es immer so sein soll, wie auf dem Vertrag? –

+0

@JoachimIsaksson, Weil ich einige Informationen von sub_contracts in diffrent Tabelle behalten sollte –

Antwort

3
update SUB_CONTRACTS 
set USER_ID = CONTRACTS.USER_ID 
from SUB_CONTRACTS 
inner join CONTRACTS on (SUB_CONTRACTS.NUMBER_IDENTITY = CONTRACTS.NUMBER_IDENTITY) 

Diese Syntax wird für SQL Server funktionieren. Es aktualisiert alle USER_ID Werte in SUB_CONTRACTS, um die Werte in CONTRACTS zu entsprechen, wo der NUMBER_IDENTITY Wert derselbe in den zwei Tabellen ist.

+0

es funktioniert! Du rettest mich! Vielen Dank! –

+0

Gern geschehen :) – Seibar

Verwandte Themen