1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

10 Spalten einer Tabelle in eine andere Tabelle hinzufügen

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von sqler, 18 April 2011.

  1. sqler

    sqler Benutzer

    Hallo!

    Ich möchte gerne eine Tabelle mit ca. 10 Spalter einer anderen Tabelle ergänzen. Nun könnte ich alle 10 Spalten anlegen, die zweite Tabelle in eine Temptabelle laden und dann zu der ersten Tabelle laden, aber es gibt doch sicherlich eine einfacherer Möglichkeit, oder? Wichtig ist mir, dass Tabelle1 Tabelle1 bleibt. Eine neue Tabelle mit den ganzen Daten bekomme ich ohne Probleme mit einem inner join hin.

    Tabelle1
    ArticleID, Beschreibung, LieferantenID, ...

    Tabelle2
    LieferantenID, Anschrift1, Anschrift2,....
     
  2. ukulele

    ukulele Datenbank-Guru

    Sry aber verstehe ich nicht ganz. Du willst 2 Tabellen dauerhaft zu einer zusammen führen? oder nur um Daten abzufragen?
     
  3. sqler

    sqler Benutzer

    Ja, die Tabelle1 soll die Daten der Tabelle 2 enthalten. Die Tabelle2 wird danach nicht mehr benötigt.

    Das Ergebnis wäre dann:
    Tabelle1
    ArticleID, Beschreibung, LieferantenID, ..., Anschrift1, Anschrift2,....
     
  4. ukulele

    ukulele Datenbank-Guru

    Nun da gibt es mehrere Möglichkeiten, die aber ein bischen Aufwand bedeuten. Das einfachste ist meiner Meinung nach ein SELECT auf beide Tabellen der alles so Anzeigt wie die Daten später in der neuen Tabelle stehen sollen. Das ganze grad in die Tabellen Kalkulation deiner Wahl kopieren und zu jeder Spalte ein INSERT Statement per Formel erstellen. Neue Tabelle anlegen und dann die INSERTs ausführen. Es gibt aber noch viele andere Wege.

    Alternativ ist es vieleicht sinnvoll, die Datenstruktur zu erhalten und nicht zu "denormalisieren". Hierzu könnte eine Sicht auch einfach die gewünschten Inhalte mit dem gleichen SELECT liefern.

    Code:
    SELECT    *
    FROM    Tabelle1 t1,
            Tabelle2 t2
    WHERE    t1.LieferantenID = t2.LieferantenID
     
  5. sqler

    sqler Benutzer

    Ich habe es fast befürchtet. Meine optimale Lösung wäre ein

    SELECT *
    FROM Tabelle2
    INTO Tabelle1
    WHERE Tabelle1.LieferantenID=Tabelle2.LieferantenID;

    Aber diese oder eine ähnliche Lösung ist wohl nicht möglich, oder?
     
  6. ukulele

    ukulele Datenbank-Guru

    Die einfachste Lösung wäre die Sicht, aber nur wenn die Daten gelesen werden. Man könnte auch ein reines SQL Script nehmen, welches Zeilenweise die Daten umscrheibt. Ist aber nicht ganz so einfach zu erstellen.
     
  7. Charly

    Charly Datenbank-Guru

    Hallo sqler,

    zuerst solltest Du dir mal ein paar neue Spalten in Tabelle 1 anlegen.

    Danach einfach ein INSERT in Tabelle 1 mit dem Ergebins einer Select aus Tabelle 1 und 2 mit verweis auf den Schlüssel von Tabelle1

    Code:
    INSERT INTO Tabelle1 (Anschrift1, Anschrift2. etc...)
    SELECT Anschrift1, Anschrift2, etc... FROM Tabelle2 AS T2
    JOIN Tabelle1 AS T1 ON T1.LieferantenID=T2.LieferantenID
    WHERE T1.LieferantenID = Tabelle1.LieferantenID 
    Syntax habe ich jetzt nicht genau geprüft aber so sollte es gehen.

    Gruß Charly
     

Diese Seite empfehlen