AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Insert in Tabelle mit unterschiedlichen Spalten
Thema durchsuchen
Ansicht
Themen-Optionen

Insert in Tabelle mit unterschiedlichen Spalten

Ein Thema von Sven95 · begonnen am 6. Okt 2015 · letzter Beitrag vom 7. Okt 2015
Antwort Antwort
Seite 1 von 2  1 2      
Sven95

Registriert seit: 4. Sep 2014
7 Beiträge
 
#1

Insert in Tabelle mit unterschiedlichen Spalten

  Alt 6. Okt 2015, 16:10
Datenbank: MySQL • Version: kA • Zugriff über: SQL
Hallo ihr da draußen

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.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

AW: Insert in Tabelle mit unterschiedlichen Spalten

  Alt 6. Okt 2015, 16:14
Anstelle des * die Spalten aufführen, die Du übernehmen möchtest?
  Mit Zitat antworten Zitat
Sven95

Registriert seit: 4. Sep 2014
7 Beiträge
 
#3

AW: Insert in Tabelle mit unterschiedlichen Spalten

  Alt 6. Okt 2015, 16:23
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.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Insert in Tabelle mit unterschiedlichen Spalten

  Alt 6. Okt 2015, 16:33
So einfach über ien Insert-Statement wirst Du das wohl nicht hinbekommen.
Markus Kinzler
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#5

AW: Insert in Tabelle mit unterschiedlichen Spalten

  Alt 6. Okt 2015, 16:37
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?
  Mit Zitat antworten Zitat
Sven95

Registriert seit: 4. Sep 2014
7 Beiträge
 
#6

AW: Insert in Tabelle mit unterschiedlichen Spalten

  Alt 6. Okt 2015, 16:41
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 !
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Insert in Tabelle mit unterschiedlichen Spalten

  Alt 6. Okt 2015, 16:42
Ich machs (oft) über ein

Code:
select 1 = 2 from <tabelle>
und geh dann durch die Spaltenliste um den Namen und den Typ abzufragen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#8

AW: Insert in Tabelle mit unterschiedlichen Spalten

  Alt 6. Okt 2015, 16:48
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 select * from <tabelle> where 1 = 2
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Insert in Tabelle mit unterschiedlichen Spalten

  Alt 6. Okt 2015, 16:54
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 select * from <tabelle> where 1 = 2
O, ja. Natürlich so herum.

Wieso gibts in DP-Editor keine SQL-Syntax-Check
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

AW: Insert in Tabelle mit unterschiedlichen Spalten

  Alt 6. Okt 2015, 17:53
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
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 20:47 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