![]() |
Datenbank: MS-SQL • Version: 10.50 (2008) • Zugriff über: ADO
MS-SQL - zwei Tabellen zusammenführen
Folgendes Problem: gegeben seien zwei Tabellen, die zu einer zusammengeführt werden sollen. Dazu wurden die Felder der (hoffentlich) demnächst obsoleten Tabelle in der anderen Tabelle angelegt. Natürlich sind die leer, sollen aber mit den Daten der obsoleten Tabelle gefüllt werden. Die andere Tabelle enthält aber bereits Daten, die Beziehung ist 1:1. Wie tue ich...?
|
AW: MS-SQL - zwei Tabellen zusammenführen
Daten mit SQL kopieren? :glaskugel:
SQL-Code:
INSERT INTO NeueTabelle SELECT Feld1, Feld2, Feld3 FROM AlteTabelle
Sollte die neue Tabelle mehr Felder haben als die alte Tabelle, dann kann man diese mit Dummywerten füllen (oder auch NULLwerten)
SQL-Code:
INSERT INTO NeueTabelle SELECT Feld1, Feld2, Feld3, 'DummyWert4' AS Feld4, NULL AS Feld5 FROM AlteTabelle
|
AW: MS-SQL - zwei Tabellen zusammenführen
Wenn ich Dich richtig verstanden habe, müsste das sinngemäß so gehen:
SQL-Code:
UPDATE
Komplett-Tabelle SET Feld1 = ( SELECT Feld1 FROM Zu-löschende-Tabelle WHERE Zu-löschende-Tabelle.FK = Komplett-Tabelle.PK), Feld2 = ( SELECT Feld2 FROM Zu-löschende-Tabelle WHERE Zu-löschende-Tabelle.FK = Komplett-Tabelle.PK), --usw. |
AW: MS-SQL - zwei Tabellen zusammenführen
Zitat:
Wieviele Tabellen gibt es insgesamt? (2 oder 3) Ist die Zieltabelle jetzt leer oder schon (teilweise) mit Daten gefüllt? |
AW: MS-SQL - zwei Tabellen zusammenführen
Für mich klingt das eigentlich recht eindeutig.
Zitat:
Zitat:
|
AW: MS-SQL - zwei Tabellen zusammenführen
Vielen Dank ersma. Insert Into dürfte aber nicht gehen, da dadurch in der (erweiterten) Zieltabelle ja neue Zeilen entstehen, es sollen aber die leeren Felder existierender Zeilen gefüllt werden. Den Update-Ansatz hatte ich so auch schon verfolgt, das mag er aber nicht, weil die Unterabfrage ja jeweils mehrere Werte liefert. Dabei wär's so schön...
Der Ansatz mit der dritten Tabelle und dem Join - das müsste eigentlich hinhauen. Manchmal is man ja wie vernagelt. Ich werde berichten. Aber nicht mehr heute... |
AW: MS-SQL - zwei Tabellen zusammenführen
so hab ich das auch verstanden (update).
(nur der 1:1 Beziehung traue ich nicht so ganz) Gruß K-H |
AW: MS-SQL - zwei Tabellen zusammenführen
>>(nur der 1:1 Beziehung traue ich nicht so ganz)
Doch, ist wirklich so. Klarer Design-Fehler. |
AW: MS-SQL - zwei Tabellen zusammenführen
Wenn es eine 1:1 Beziehung gibt, dann sollte man ein Update ausführen, denn die neuen Felder sind ja noch leer, also:
SQL-Code:
Wenn Du zusätzlich noch alle Einträge der alten Tabelle haben willst, die nicht in der neuen Tabelle sind, dann noch zusätzlich
Update NeueTabelle
Set NeuesFeld1 = AlteTabelle.Feld1, ... NeuesFeldN = AlteTabelle.FeldN from AlteTabelle where AlteTabelle.PK = NeueTabelle.PK
SQL-Code:
Insert into NeueTabelle (NeuesFeld1,...,NeuesFeldN)
select Feld1,...,FeldN from AlteTabelle left join NeueTabelle on AlteTabelle.PK = NeueTabelle.PK where NeueTabelle.PK is null |
AW: MS-SQL - zwei Tabellen zusammenführen
UPDATE...FROM - natürlich! *Stirnklatsch*
Ich muss dringend meine SQL-Kenntnisse auffrischen... Works like a charm - Danke! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz