SQL2005 Import aus Tabelle2 in eine vorhandene Tabelle anhand der Kundennummer
Hallo,
ich habe hier ein Problem (MSSQL2005) und weiss nicht genau wie ich das lösen soll.
Habe eine Tabelle wo schon Datensätze vorhanden sind Name, Adresse, PLZ, Ort, Kundennumemr...etc
In einer zweiten Tabelle habe ich 2 Spalten Kundennummer und Priorität
Die Priorität aus der 2. Tabelle soll nun in das Feld "Priorität" in die erste Tabelle übertragen werden (weiss nicht ob das überhaupt geht)
Tabelle 1 mit den Adressen sieht so aus
die zweite Tabelle mit den Prioritäten sieht so aus
das Ergebnis wie es nach dem SQL Befehl aussehen soll
Ich benötige ein SQL Befehl der folgendes tut: ein Vergleich zwischen den 2 Tabellen. Die Kundennummer soll abgeglichen werden, wenn diese in beiden Tabellen gleich sind soll der Wert Priorität aus der Tabelle 2 in das Feld Priorität aus der Tabelle 1 übertragen werden und dem richtigen Kunden zugeordnet werden
Weiss jemand ob das überhaupt machbar ist und wie der SQL-Befehl lauten muss damit das ganze funktioniert?
Vielen Dank schon mal im voraus.
Gruß
Robert
ich habe hier ein Problem (MSSQL2005) und weiss nicht genau wie ich das lösen soll.
Habe eine Tabelle wo schon Datensätze vorhanden sind Name, Adresse, PLZ, Ort, Kundennumemr...etc
In einer zweiten Tabelle habe ich 2 Spalten Kundennummer und Priorität
Die Priorität aus der 2. Tabelle soll nun in das Feld "Priorität" in die erste Tabelle übertragen werden (weiss nicht ob das überhaupt geht)
Tabelle 1 mit den Adressen sieht so aus
die zweite Tabelle mit den Prioritäten sieht so aus
das Ergebnis wie es nach dem SQL Befehl aussehen soll
Ich benötige ein SQL Befehl der folgendes tut: ein Vergleich zwischen den 2 Tabellen. Die Kundennummer soll abgeglichen werden, wenn diese in beiden Tabellen gleich sind soll der Wert Priorität aus der Tabelle 2 in das Feld Priorität aus der Tabelle 1 übertragen werden und dem richtigen Kunden zugeordnet werden
Weiss jemand ob das überhaupt machbar ist und wie der SQL-Befehl lauten muss damit das ganze funktioniert?
Vielen Dank schon mal im voraus.
Gruß
Robert
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 103819
Url: https://administrator.de/contentid/103819
Ausgedruckt am: 26.11.2024 um 03:11 Uhr
7 Kommentare
Neuester Kommentar
Moin Raban,
das sollte so gehen:
-oder auch-
MSSQL unterstützt UPDATEs mit verJOINten Tabellen, bei denen eine Seite des JOINs aktualisiert wird.
Die zweite Syntax ist absolut gleichwertig (INNER JOIN), aber nach meinem Geschmack lesbarer/übersichtlicher.
Grüße
Biber
das sollte so gehen:
UPDATE tabelle1 t1
JOIN tabelle2 t2 on t1.Kundennummer = t2.Kundennummer
SET t1 Prioritaet = t2.Prioritaet ;
UPDATE tabelle1 t1, Tabelle2 t2
SET t1 Prioritaet = t2.Prioritaet
WHERE T1.Kundennummer = t2.Kundennummer;
MSSQL unterstützt UPDATEs mit verJOINten Tabellen, bei denen eine Seite des JOINs aktualisiert wird.
Die zweite Syntax ist absolut gleichwertig (INNER JOIN), aber nach meinem Geschmack lesbarer/übersichtlicher.
Grüße
Biber
Moin Raban,
Antwort 1)
Du kannst einfach noch ein "WHERE t1.NAME like 'EDE%' an das o.a. UPDATE-Statement (vor das ";") anhängen
Antwort 2)
Du solltest allerdings NIE NIE NIE ein UPDATE-Statement abfeuern, wenn Du nicht vorher mit einem normalen SELECT-Statement geprüft hast, welche Sätze denn betroffen wären.
Grüße
Biber
Antwort 1)
Du kannst einfach noch ein "WHERE t1.NAME like 'EDE%' an das o.a. UPDATE-Statement (vor das ";") anhängen
Antwort 2)
Du solltest allerdings NIE NIE NIE ein UPDATE-Statement abfeuern, wenn Du nicht vorher mit einem normalen SELECT-Statement geprüft hast, welche Sätze denn betroffen wären.
Grüße
Biber
Moin Raban,
ich verwende gerne Tabellen-Alias wie t1, t2 oder auch A, B, C, weil es dann für mich lesbarer/nachvollziehbarer wird.
Der Datenbank ist das vollkommen egal - die kommt auch mit 32stelligen Tabellennamen gut klar.
Nur Du musst Dich entscheiden: wenn Du in einem Statement erstmal "angekündigt" hast, dass Du die Tabelle ADDRESSES ab sofort nur noch "t1" nennst, dann wird sie auch nur noch als "t1" wiedergefunden.
Also entweder OHNE Aliase:
-oder mit Aliasen:
... aber nicht Kraut-und-Rüben.
Grüße
Biber
ich verwende gerne Tabellen-Alias wie t1, t2 oder auch A, B, C, weil es dann für mich lesbarer/nachvollziehbarer wird.
Der Datenbank ist das vollkommen egal - die kommt auch mit 32stelligen Tabellennamen gut klar.
Nur Du musst Dich entscheiden: wenn Du in einem Statement erstmal "angekündigt" hast, dass Du die Tabelle ADDRESSES ab sofort nur noch "t1" nennst, dann wird sie auch nur noch als "t1" wiedergefunden.
Also entweder OHNE Aliase:
UPDATE ADDRESSES
JOIN tfdiln ON ADDRESSES.CUSTOMERNUMBER0 = tfdiln.Kunde
SET ADDRESSES.TEXT46 = tfdiln.ILN;
UPDATE ADDRESSES t1
JOIN tfdiln t2 ON t1.CUSTOMERNUMBER0 = t2.Kunde
SET t1.TEXT46 = t2.ILN;
... aber nicht Kraut-und-Rüben.
Grüße
Biber
Moin Raban,
Bist Du denn noch leidensfähig genug?
Dann machen wir es so:
-was wiederum diesem hier entsprechen sollte:
Probier bitte mal Variante 1 aus.
Grüße
Biber
Hast Du noch eine Idee?
An Ideen mangelt es mir selten.Bist Du denn noch leidensfähig genug?
Dann machen wir es so:
UPDATE ADDRESSES
SET TEXT46 = t2.ILN
FROM ADDRESSES t1, tfdiln t2
WHERE t1.CUSTOMERNUMBER0 = t2.Kunde;
UPDATE ADDRESSES
SET TEXT46 = t2.ILN
FROM ADDRESSES t1 INNER JOIN tfdiln t2
ON t1.CUSTOMERNUMBER0 = t2.Kunde;
Probier bitte mal Variante 1 aus.
Grüße
Biber