SELECT * FROM tabelle1
UNION
SELECT * FROM tabelle2
ORDER BY 1;
hallo peter,
sowas wäre mein wunschtraum, leider hab ich mein problem nicht detailliert genug geschildert. es handelt sich um folgendes:
ich muss änderungen an einer datenbank zwischenspeichern und erst zu einem gewissen zeitpunkt wirklich in die original-tabellen übernehmen - oder verwerfen. also eine art langfristige transaktion im hintergrund, im vordergrund (benutzeroberfläche) jedoch unsichtbar, hier sieht man sofort die änderungen.
die änderungen im programm selber zwischenzuspeichern hat auch seine tücken, da ich bei hinzufügen von elementen in „untertabellen“ eine IDENTITY/AUTO_INCREMENT erhalten will und ich so eine gesamte datenbank in meinem programm simulieren müsste.
da ich auch nicht für jede tabelle (es sind sehr viele) eine eigene [temporäre] tabelle erstellen will, habe ich eine „transaktionstabelle“ erstellt, die natürlich anders aufgebaut ist als die original-tabelle, wodurch ich auch kein „UNION“ verwenden kann. diese tabelle kann ich auch verwenden, um datensätze zu locken.
die transaktionstabelle sieht also ungefähr so aus:
tblTransactions
- nTransactionID INT
- nLoginID INT
- strOriginalTable VARCHAR
- nOriginalRowID INT
- strOriginalColumn VARCHAR
- strOriginalValue VARCHAR
vielleicht bin ich auch viel zu kompliziert und es gäbe eine viel einfachere lösung. vielleicht wären temporäre tabellen wirklich besser (auch in kombination mit einer kleineren transaktions-tabelle).
das ergebnis sollte jedenfalls so aussehen, dass ich bei einem SELECT auf einen datensatz zusätzlich die zwischengespeicherten änderungen mit einbeziehe und falls einzelne änderungen in verschiedenen columns vorhanden sind, diese statt den originaldaten ausgebe.
es geht hier übrigens wirklich nur um UPDATEs, nicht um INSERTS oder DELETEs
also beispiel:
originaltabelle
id vorname nachname strasse
10 max muster bahnhofstrasse
transaktionstabelle
id table row column value
5 originaltabelle 10 nachname mustermann
5 originaltabelle 10 strasse kirchgasse
wenn ich jetzt max muster auslesen will, sollte folgendes herauskommen:
id vorname nachname strasse
10 max mustermann kirchgasse
ich hoffe ich habe diesen nicht ganz so trivialen sachverhalt halbwegs verständlich dargelegt. hat jemand eine gute idee?