SQL Daten aus Tabellen in vorhandene Tabelle speichern - INSERT INTO VALUES & SELECT

palaber

Captain
Registriert
Juni 2006
Beiträge
3.856
Hey,

ich muss aus zwei verschiedenen Tabellen Datensätze ermitteln und jeweils Fragmente dieser Datensätze
in eine vorhandene Tabelle einfügen (mit Access und SQL-Server).
Die Strukturen der Tabellen sind unterschiedlich - für jeden Datensatz werden aus:

- Tabelle 1: 3 Spalten benötigt
- Tabelle 2: 1 Spalte benötigt
- Zieltabelle: 8 Spalten (5 werden befüllt - 3 nicht)
ID (autoInc) | Kennung | KndNr | Auftrag | Strasse | X | Y | Z

Muss ich zwei Schritte gehen -> SELECT der 4 Spalten ablegen in RecordSet (rs)
und dann Recordset durchlaufen und per
INSERT INTO Zieltabelle (Kennung, KndNr,...) VALUES (rs.0, rs.1, rs.2, rs.3) die Daten eintragen?

Oder gibt es auch eine Möglichkeit ein INSERT INTO... VALUES... mit einem SELECT zu verknüpfen?

Danke für eure Hilfe!
 
Doch, das könnte gehen, mit einem Subselect... also sinngemäß INSERT INTO ... VALUES(SELECT spalte1 as a, spalte2 as b,.... FROM ...)
 
Das funktioniert bei MS-SQL soweit ich weiß (nutze hauptsächlich Oracle, da geht das). Wichtig bei soeiner Sache ist jedoch, dass sich die Tabellenstruktur der Tabelle in die du die Daten schreibst nicht änderst, Spalte hinzu oder weg oder sonstwas. Dann musst du nämlich auch den Select anpassen. Sicherer ist es, wenn du die Daten vorher selektierst und dann ein gewöhnlichen INSERT machst.
 
t1 und t2 müssen in irgend einem Verhältnis stehen, woher soll die DB Engine sonst wissen wie die Datensätze zusammen gehören.

Dann sollte es so aussehen.

insert into t3 (t3.s1, t3.s2, t3.s3, t3.s4, t3.s5, t3.s6, t3.s7, t3.s8)
select t1.s1, t1.s2, t1.s3, t2.s1, '', '', '', ''
from t1 inner join t2
on t1.id = t2.id
 
Zuletzt bearbeitet: (Versehentlich Oracle Syntax eingebaut ;-))
Oh man, vor lauter Bäumen den Wald nicht gesehen^^
Das w3 Beispiel hat mir die Augen geöffnet -> es gibt ja auch nen JOIN :freak:

Habe es jetzt in etwa so gelöst:
Code:
INSERT INTO   ZielTabelle (Kennung, KndNr, RechNr, Strasse)
SELECT       tb1.a, tb1.x, tb1.y, tb2.x
FROM         tb2 INNER JOIN tb1 ON tb2.a = tb1.a AND tb2.b = tb1.b
WHERE        tb2.c = 1

DANKE!
 
Zurück
Oben