Betreiber von 2 Tabellen in SQL

Sagen Sie, ich habe folgende Situation: Ich habe einige Städte mit Gebäuden. Jede Stadt ist in Bezirke unterteilt. Jeder Bezirk sollte ein "Haupthaus" (ein pro Bezirk) haben.

Ich habe (sql server 2005) eine entsprechende assoziierte Tabelle CITY_BUILDS (IDCITY, IDBUILD)
Ich habe auch einen BUILD (ID, DISTRICT, IS_MAIN, COLOR)

Also, sagen die Stadt Bürgermeister beschlossen, das "Haupthaus" der Bezirke in der Farbe des ersten Hauses in der Bezirk-list (verrückte Idee, aber trotzdem)

Ich brauche in einer Stadt foreach Bezirk wählen Sie das "Haupthaus", dann suchen Sie nach dem ersten Bezirk Haus, gucken Sie seine Farbe und malen das Haupthaus.

Ich habe einen Stub für meine Prozedur angefangen, aber bald wurde ich verwirrt …

 DECLARE L_CURSOR CURSOR FAST_FORWARD FOR SELECT B.DISTRICT, B.IS_MAIN, B.ID FROM BUILD B INNER JOIN CITY_BUILDS C_B ON B.ID = C_B.IDBUILD WHERE IDCITY = 142 --AND B.IS_MAIN=1 ORDER BY DISTRICT 

PS Durch erstes Gebäude, ich meine jedes erste Vorkommen in der CITY_BUILDS list … Auch das "FIRST" Haus sollte nicht das MainHouse selbst sein …

PPS Ich habe einen Cursor benutzt, denn sobald ich das Paar (ID_MAIN_HOUSE – ID_FIRST_HOUSE) im echten Projekt bekomme, muss ich eine gespeicherte Prozedur mit diesen 2 Argumenten anrufen und die FARBE …

   

Annahme IS_MAIN ist 1 für den Hauptbezirk Ich denke, Sie können alle mit einer Update-statement zu tun

 UPDATE B SET COLOR = M.COLOUR FROM CITY_BUILDS C -- get city -- get main INNER JOIN BUILD M ON M.ID = C.IDBUILD AND M.IS_MAIN =1 -- get others join them to city and main district INNER JOIN BUILD B ON C.ID = C.IDBUILD AND C.IS_MAIN <> 1 AND M.DISTRICT = B.DISTRICT -- if you really only need one city then uncomment following --WHERE C.IDCITY = 142