Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Insert in Tabelle mit unterschiedlichen Spalten (https://www.delphipraxis.net/186848-insert-tabelle-mit-unterschiedlichen-spalten.html)

Sven95 6. Okt 2015 15:10

Datenbank: MySQL • Version: kA • Zugriff über: SQL

Insert in Tabelle mit unterschiedlichen Spalten
 
Hallo ihr da draußen :D

ich hab ein Problem und hoffe ich kann es so deutlich beschreiben, dass ihr mich versteht.

Und zwar folgendes:

Ich habe 2 Tabellen, diese besitzen fast identische Spalten. Also Datentyp & Bezeichner. Nun möchte ich die kompletten Datensätze der Tabelle A in die Tabelle B schreiben.
Das Problem dabei ist, das die Spalte die in der Tabelle A nicht existiert dann Probleme macht.

Also nochmal zur Verdeutlichung:

Tabelle A:

[Spalte XXX - Int] [Spalte YYY - smallInt] [Spalte ZZZ - varchar(3)]

Tabelle B:

[Spalte XXX - Int] [Spalte YYY - smallInt] [Spalte AAA - smallint] [Spalte ZZZ - varchar(3)]

Mein bisheriger Ansatz ist folgender:
Code:
INSERT INTO Tabelle A
SELECT *
FROM Tabelle B
Ich bräuchte also einen Ansatz wie ich prüfen kann, dass die Spalte aus Tabelle A in genau die gleichnamige Spalte von Tabelle B geschrieben wird und somit die Spalte, die in Tabelle A nicht existiert "übersprungen" wird.

nahpets 6. Okt 2015 15:14

AW: Insert in Tabelle mit unterschiedlichen Spalten
 
Anstelle des * die Spalten aufführen, die Du übernehmen möchtest?

Sven95 6. Okt 2015 15:23

AW: Insert in Tabelle mit unterschiedlichen Spalten
 
Erstmal Danke für die schnell Antwort, aber das Problem ist, dass diese unterschiedlich sein können.
Also es steht nicht immer fest, dass genau diese Spalte in Tabelle A nicht existiert und das ganze Statement soll dynamisch laufen.
Ich bräuchte also einen Denkanstoß wie ich prüfen kann, dass die Werte der Spalten aus Tabelle A genau in die Spalten der Tabelle B geschrieben werden.

mkinzler 6. Okt 2015 15:33

AW: Insert in Tabelle mit unterschiedlichen Spalten
 
So einfach über ien Insert-Statement wirst Du das wohl nicht hinbekommen.

nahpets 6. Okt 2015 15:37

AW: Insert in Tabelle mit unterschiedlichen Spalten
 
Bin mir nicht sicher, ob ich Deine Aufgabenstellung richtig verstehe:

Du suchst ein Statement, das für beliebige Tabellen die Daten in beliebige Tabellen kopieren kann, bei denen die Tabellenstruktur beliebig ähnlich oder auch beliebig unterschiedlich sein kann, aber gewisse Ähnlichkeiten im Tabellenaufbau und bei den Datentypen in der Regel vorhanden sein können?

(Ist jetzt vermutlich überspitzt formuliert, aber trifft das so inetwa zu?)

Hilft Dir eventuell das INFORMATION_SCHEMA?

Sven95 6. Okt 2015 15:41

AW: Insert in Tabelle mit unterschiedlichen Spalten
 
Genau, es sind immer 2 Tabellen die sich in gewisser Weise ähneln. Also anhand von Spaltenbezeichnern und Datentyp. Doch es kann vorkommen, dass in der Tabelle in die eingefügt werden soll Spalten existieren die in der anderen nicht existieren also muss irgendwie geprüft werden das die Werte der Spalten in die dafür vorgesehene, identische Spalte geschrieben werden.

Ich werd' mir das mal anschauen, danke !

Bernhard Geyer 6. Okt 2015 15:42

AW: Insert in Tabelle mit unterschiedlichen Spalten
 
Ich machs (oft) über ein

Code:
select 1 = 2 from <tabelle>
und geh dann durch die Spaltenliste um den Namen und den Typ abzufragen.

nahpets 6. Okt 2015 15:48

AW: Insert in Tabelle mit unterschiedlichen Spalten
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1317805)
Ich machs (oft) über ein

Code:
select 1 = 2 from <tabelle>
und geh dann durch die Spaltenliste um den Namen und den Typ abzufragen.

Meinst Du nicht eher
Delphi-Quellcode:
select * from <tabelle> where 1 = 2

Bernhard Geyer 6. Okt 2015 15:54

AW: Insert in Tabelle mit unterschiedlichen Spalten
 
Zitat:

Zitat von nahpets (Beitrag 1317807)
Zitat:

Zitat von Bernhard Geyer (Beitrag 1317805)
Ich machs (oft) über ein

Code:
select 1 = 2 from <tabelle>
und geh dann durch die Spaltenliste um den Namen und den Typ abzufragen.

Meinst Du nicht eher
Delphi-Quellcode:
select * from <tabelle> where 1 = 2

O, ja. Natürlich so herum.

Wieso gibts in DP-Editor keine SQL-Syntax-Check :stupid:

Sir Rufo 6. Okt 2015 16:53

AW: Insert in Tabelle mit unterschiedlichen Spalten
 
Einen SQL-Syntax-Check gibt es nicht, aber einen SQL-Syntax-HighLighter:
SQL-Code:
select 1 = 2 
from <tabelle>
vs.
SQL-Code:
select *
from <tabelle>
where 1 = 2
Da fällt das schon eher ins Auge ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:53 Uhr.
Seite 1 von 2  1 2      

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