Ich habe einige gespeicherte Prozeduren, die ich gegen eine böse Biest einer Datenbank schreiben muss. Ich muss eine Tabelle (Anwendung) durchlaufen und Werte aus anderen Tabellen (einige sind aggerate/Durchschnitte/etc Werte) mit der application_id aus der Anwendungstabelle ziehen.T-SQL-Schleife, um ein Recordset zu erstellen
Bisher habe ich:
declare @id INT
declare app cursor for
SELECT application_id from application
OPEN app
FETCH NEXT FROM app
INTO @id
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT a.NAME_LAST, a.NAME_FIRST, ca.status, (SELECT AVG(score) FROM reviews WHERE application_id = @id), (SELECT count(*) FROM reviews WHERE application_id = @id) FROM application a, committee_applications ca WHERE a.application_id = ca.application_id AND a.application_id = @id
FETCH NEXT FROM app INTO @id
END
CLOSE app
DEALLOCATE app
die mir die Ergebnisse schenkt ich will, aber ich bin sicher, es ist ein sauberer Weg, dies zu tun, und ich kann nicht die mentale Sprung zu machen scheinen heute, um das richtig zu machen. Könnte jemand darauf hinweisen, dass dies für mich wirklich hässlich ist?
Es scheint auch, dass ich diese Werte in einer temporären Tabelle speichern sollte und dann die vollständigen Ergebnisse zurückgeben sollte, anstatt die SELECT-Anweisung nacheinander auszuführen.
Alle Vorschläge würden sehr geschätzt werden.
Danke.
Danke, das rockt und ist was ich gesucht habe. Ich wusste, dass es viel sauberer war. Jetzt muss ich einfach den Rest dieses verrückten SQL hinein hämmern. –