AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken MS-SQL - zwei Tabellen zusammenführen

MS-SQL - zwei Tabellen zusammenführen

Ein Thema von Peinhard · begonnen am 16. Mai 2012 · letzter Beitrag vom 17. Mai 2012
Antwort Antwort
Peinhard

Registriert seit: 8. Jul 2006
152 Beiträge
 
#1

MS-SQL - zwei Tabellen zusammenführen

  Alt 16. Mai 2012, 17:10
Datenbank: MS-SQL • Version: 10.50 (2008) • Zugriff über: ADO
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...?
Confuzius say: Early worm have death wish.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

AW: MS-SQL - zwei Tabellen zusammenführen

  Alt 16. Mai 2012, 17:16
Daten mit SQL kopieren?

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)

INSERT INTO NeueTabelle SELECT Feld1, Feld2, Feld3, 'DummyWert4AS Feld4, NULL AS Feld5 FROM AlteTabelle
Andreas

Geändert von shmia (16. Mai 2012 um 17:18 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.533 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: MS-SQL - zwei Tabellen zusammenführen

  Alt 16. Mai 2012, 17:19
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

AW: MS-SQL - zwei Tabellen zusammenführen

  Alt 16. Mai 2012, 17:23
Wenn ich Dich richtig verstanden habe
Offensichtich hat der TE sein Problem nicht richtig erklärt, denn ich habe etwas anderes verstanden als Du.

Wieviele Tabellen gibt es insgesamt? (2 oder 3)
Ist die Zieltabelle jetzt leer oder schon (teilweise) mit Daten gefüllt?
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.533 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: MS-SQL - zwei Tabellen zusammenführen

  Alt 16. Mai 2012, 17:28
Für mich klingt das eigentlich recht eindeutig.
Zitat:
Dazu wurden die Felder der (hoffentlich) demnächst obsoleten Tabelle in der anderen Tabelle angelegt.
Die bestehende erste Tabelle wurde also um die Felder der zweiten erweitert.
Zitat:
Die andere Tabelle enthält aber bereits Daten, die Beziehung ist 1:1.
Und enthält ihre bereits eingegebenen Daten. Ziel soll also wohl sein: aus 2 mach 1. Man könnte natürlich auch zunächst eine 3. Tabelle mit allen Feldern anlegen, diese mit einem JOIN aus den beiden anderen Tabellen befüllen, anschließend die beiden alten Tabellen löschen und die neue dann umbenennen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Peinhard

Registriert seit: 8. Jul 2006
152 Beiträge
 
#6

AW: MS-SQL - zwei Tabellen zusammenführen

  Alt 16. Mai 2012, 18:00
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...
Confuzius say: Early worm have death wish.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#7

AW: MS-SQL - zwei Tabellen zusammenführen

  Alt 16. Mai 2012, 18:06
so hab ich das auch verstanden (update).
(nur der 1:1 Beziehung traue ich nicht so ganz)
Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Peinhard

Registriert seit: 8. Jul 2006
152 Beiträge
 
#8

AW: MS-SQL - zwei Tabellen zusammenführen

  Alt 16. Mai 2012, 18:15
>>(nur der 1:1 Beziehung traue ich nicht so ganz)

Doch, ist wirklich so. Klarer Design-Fehler.
Confuzius say: Early worm have death wish.
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#9

AW: MS-SQL - zwei Tabellen zusammenführen

  Alt 17. Mai 2012, 06:47
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:
Update NeueTabelle
  Set NeuesFeld1 = AlteTabelle.Feld1,
...
      NeuesFeldN = AlteTabelle.FeldN
from AlteTabelle
  where AlteTabelle.PK = NeueTabelle.PK
Wenn Du zusätzlich noch alle Einträge der alten Tabelle haben willst, die nicht in der neuen Tabelle sind, dann noch zusätzlich
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
  Mit Zitat antworten Zitat
Peinhard

Registriert seit: 8. Jul 2006
152 Beiträge
 
#10

AW: MS-SQL - zwei Tabellen zusammenführen

  Alt 17. Mai 2012, 12:44
UPDATE...FROM - natürlich! *Stirnklatsch*

Ich muss dringend meine SQL-Kenntnisse auffrischen...

Works like a charm - Danke!
Confuzius say: Early worm have death wish.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz