Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

SQL2005 Import aus Tabelle2 in eine vorhandene Tabelle anhand der Kundennummer

Frage Entwicklung Datenbanken

Mitglied: Raban

Raban (Level 1) - Jetzt verbinden

11.12.2008, aktualisiert 16.12.2008, 3358 Aufrufe, 7 Kommentare

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

dafaabdd7289c2fec6bcc38010a91704-tabelle01 - Klicke auf das Bild, um es zu vergrößern

die zweite Tabelle mit den Prioritäten sieht so aus

d6e336acd7f4854313326501060701c5-tabelle02 - Klicke auf das Bild, um es zu vergrößern

das Ergebnis wie es nach dem SQL Befehl aussehen soll

547a6dff8cb2c2486938d07daa7efb50-tabelle03 - Klicke auf das Bild, um es zu vergrößern


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
Mitglied: Biber
11.12.2008 um 08:01 Uhr
Moin Raban,

das sollte so gehen:
01.
 UPDATE tabelle1 t1  
02.
JOIN tabelle2 t2 on t1.Kundennummer = t2.Kundennummer 
03.
SET t1 Prioritaet = t2.Prioritaet ;
-oder auch-
01.
 UPDATE tabelle1 t1, Tabelle2 t2  
02.
SET t1 Prioritaet = t2.Prioritaet  
03.
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
Bitte warten ..
Mitglied: Raban
11.12.2008 um 11:11 Uhr
Hi,
vielen Dank für die Hilfe. Ich werde das gleich ausprobieren.

Kann man da noch eine Bedingung mit einbauen, wo nur die Kunden angepasst werden wenn diese in der Tabelle01 in der Spalte "Name" mit "EDE" anfangen?

Vielen Dank
Gruß
Robert
Bitte warten ..
Mitglied: Biber
11.12.2008 um 14:11 Uhr
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
Bitte warten ..
Mitglied: Raban
12.12.2008 um 10:20 Uhr
Hi Biber,

ich werde nicht schlau wie man den Befehl richtig aufbaut. Ich habe das jetzt so aufgebaut

UPDATE ADDRESSES t1
JOIN tfdiln t2 ON ADDRESSES.CUSTOMERNUMBER0 = tfdiln.Kunde
SET ADDRESSES.TEXT46 = tfdiln.ILN;

aber wenn ich die SQL-Syntax überprüfen lasse kommt dann diese Meldung

"Falsche Syntax in der Nähe von 't1'

die Tabelle die aktualisiert werden muss ist die Tabelle ADDRESSES und zwar die Spalte 'TEXT46' anhand der Kundennummer die abgeglichen werden soll
Die Kundennummer ist in der Tabelle ADDRESSES in der Spalte 'Customernumber0' und in der Tabelle 'tfdiln' in der Spalte 'Kunde'

was mach ich falsch?
Vielen Dank für deine Mühe Biber
Gruß
Robert
Bitte warten ..
Mitglied: Biber
12.12.2008 um 15:40 Uhr
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:
01.
UPDATE ADDRESSES 
02.
JOIN tfdiln ON ADDRESSES.CUSTOMERNUMBER0 = tfdiln.Kunde 
03.
SET ADDRESSES.TEXT46 = tfdiln.ILN;
-oder mit Aliasen:
01.
UPDATE ADDRESSES t1 
02.
JOIN tfdiln t2 ON t1.CUSTOMERNUMBER0 = t2.Kunde 
03.
SET t1.TEXT46 = t2.ILN;
... aber nicht Kraut-und-Rüben.

Grüße
Biber
Bitte warten ..
Mitglied: Raban
16.12.2008 um 06:44 Uhr
Hallo Biber,

ich habe jetzt die Logik verstanden. Danke für die Erklärung.
Habe jetzt den SQL Befehl so aufgebaut

UPDATE ADDRESSES
JOIN tfdiln ON ADDRESSES.CUSTOMERNUMBER0 = tfdiln.Kunde
SET ADDRESSES.TEXT46 = tfdiln.ILN;


aber will irgendwie nicht...da kommt folgende Meldung

Fehler bei der SQL Ausführung

Ausgeführte SQL Anweisung: UPDATE ADDRESSES JOIN tfdiln ON ADDRESSES.CUSTOMERNUMBER0 = tfdiln.Kunde SET ADDRESSES.TEXT46 = tfdiln.ILN;

Fehlerquelle .Net SQL Client Data Provider
Fehlermeldung : Falsche Syntax in der Nähe des 'JOIN'-Schlüsselwortes

Hast Du noch eine Idee?

Vielen Dank für deine Mühe
Gruß
Robert
Bitte warten ..
Mitglied: Biber
16.12.2008 um 08:34 Uhr
Moin Raban,
Hast Du noch eine Idee?
An Ideen mangelt es mir selten.
Bist Du denn noch leidensfähig genug?

Dann machen wir es so:
01.
UPDATE ADDRESSES 
02.
SET TEXT46 = t2.ILN 
03.
FROM ADDRESSES t1, tfdiln t2  
04.
WHERE  t1.CUSTOMERNUMBER0 = t2.Kunde;
-was wiederum diesem hier entsprechen sollte:
01.
UPDATE ADDRESSES 
02.
SET TEXT46 = t2.ILN 
03.
FROM ADDRESSES t1 INNER JOIN tfdiln t2  
04.
ON  t1.CUSTOMERNUMBER0 = t2.Kunde;
Probier bitte mal Variante 1 aus.

Grüße
Biber
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
VB for Applications
gelöst Excel VBA .csv Import in Tabelle x, ab Spalte y

Frage von drimrim zum Thema VB for Applications ...

LAN, WAN, Wireless
Freifunk über vorhandene Access Points ausstrahlen (2)

Frage von Uwoerl zum Thema LAN, WAN, Wireless ...

Virtualisierung
VHD Image import VirtualBox (10)

Frage von oGutIT zum Thema Virtualisierung ...

Microsoft Office
Pivot Tabelle schützen ohne Datenabschnitt (1)

Frage von lupi1989 zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

DSL, VDSL
DSL-Signal bewerten (12)

Frage von SarekHL zum Thema DSL, VDSL ...

Windows Server
Mailserver auf Windows Server 2012 (8)

Frage von StefanT81 zum Thema Windows Server ...

Backup
Clients als Server missbrauchen? (8)

Frage von 1410640014 zum Thema Backup ...