Gast
2012-10-18, 09:37:31
Ich habe 2 Tabellen: Tabelle Ergebnis, Tabelle Detailergebnis
Es soll nun eine neue Tabelle per stored procedure zusammengebaut werden
diese besteht im wesentlichen erst mal aus einer kopie der ergebnis tabelle.
dort werden nun spalten angefügt und mit den entsprechenden detailergebnissen gefüllt (je nachdem wieviele detailergebnisse gefunden werden, normalerweise bis zu 10)
sinn der sache ist die erstellung einer tabelle welche die ergebnisse übersichtlicher darstellt
das sieht etwa folgendermaßen aus:
tabelle ergebnis:
id, part, recordcreated
tabelle detailergebnis:
id, ergebnisid, resultvalue
neue tabelle:
id, part, recordcreated, resultvalue1, resultvalue2, resultvalue3, ...
ich habe die erstellung der neuen tabelle nun etwa so gelöst:
1. tabelle kopieren (mit select into)
2. spalten hinzufügen (je nachdem wieviele benötigt werden)
3. werte in die spalten schreiben
um die werte in die spalten zu schreiben habe ich 2 cursoren verwendet. jedoch habe ich bedenken wegen der performance da es sich um recht viele datensätze in der ergebnis tabelle handelt (bis 1mio) bzw habe ich das gefühl dass die lösung nicht optimal ist
rein schematisch sieht das etwa so aus:
declare cursor1
for select id from ergebnis
declare cursor2
for select ergebnisid, resultvalue from detailergebnis
update...
ich habe mich gefragt ob es möglich ist, die neue tabelle auch geschickt durch eine query zu erstellen (evtl auch mit einer temp tabelle), oder zumindest die werte ohne einen cursor in die neue tabelle zu übertragen.
weiß jemand wie man das machen kann oder wie man das sonst alternativ lösen kann... ich habe das alles schon ne zeit lang nicht mehr gemacht.
Es soll nun eine neue Tabelle per stored procedure zusammengebaut werden
diese besteht im wesentlichen erst mal aus einer kopie der ergebnis tabelle.
dort werden nun spalten angefügt und mit den entsprechenden detailergebnissen gefüllt (je nachdem wieviele detailergebnisse gefunden werden, normalerweise bis zu 10)
sinn der sache ist die erstellung einer tabelle welche die ergebnisse übersichtlicher darstellt
das sieht etwa folgendermaßen aus:
tabelle ergebnis:
id, part, recordcreated
tabelle detailergebnis:
id, ergebnisid, resultvalue
neue tabelle:
id, part, recordcreated, resultvalue1, resultvalue2, resultvalue3, ...
ich habe die erstellung der neuen tabelle nun etwa so gelöst:
1. tabelle kopieren (mit select into)
2. spalten hinzufügen (je nachdem wieviele benötigt werden)
3. werte in die spalten schreiben
um die werte in die spalten zu schreiben habe ich 2 cursoren verwendet. jedoch habe ich bedenken wegen der performance da es sich um recht viele datensätze in der ergebnis tabelle handelt (bis 1mio) bzw habe ich das gefühl dass die lösung nicht optimal ist
rein schematisch sieht das etwa so aus:
declare cursor1
for select id from ergebnis
declare cursor2
for select ergebnisid, resultvalue from detailergebnis
update...
ich habe mich gefragt ob es möglich ist, die neue tabelle auch geschickt durch eine query zu erstellen (evtl auch mit einer temp tabelle), oder zumindest die werte ohne einen cursor in die neue tabelle zu übertragen.
weiß jemand wie man das machen kann oder wie man das sonst alternativ lösen kann... ich habe das alles schon ne zeit lang nicht mehr gemacht.