Frage : Grundlegendes Mathe in gespeichertem Verfahren Mitgliedstaat-SQL über drei Tabellen

Ich versuche, etwas sehr grundlegendes Mathe in Mitgliedstaat SQL, indem ich ein gespeichertes Verfahren zu tun verwende, um den Wert einer Spalte in Table_A ZU SUMMIEREN, dann, teile die SUMME von Table_A durch die Seitenansichtgesamtmenge von Table_B - und AKTUALISIERE den Wert in Table_C.

Basically, das ich versuche, das eCPC für ein Blei auszuarbeiten, das Aufstellungsort auf einer Seitenansichtbasis erzeugt (so, jedes Mal wenn ein Benutzer ein Profil besucht, ist das eCPC gegen die SUMME der erzeugten Bleiarten modernisiert).

val = gemeinsamer Nenner über allem drei tables

So Schritt 1 ist:
SELECT SUMME (lead_value) als lead_sum VON Table_A, WO camp_id='val'< Br/>
Step 2:
SELECT page_views VON Table_B, WO camp_id='val'< Br/>
Step 3:
new_eCPC = lead_sum/page_views

Step 4:
UPDATE Table_C GESETZTES lead_eCPC='new_eCPC, IN DEM camp_id='val'< Br/>
Now ich dies in Asp easilly tun kann, aber ich müssen einen SQL-Index dreimal durchführen, dies zu tun - dem ich bin ich es jedes Mal, geschehen zu wünschen ein Profil viewed.

Can terribily glaube, so wirkungslos auch ist, das jemand helfen uns schreiben ein gespeichertes Verfahren für dieses gefallen, also ich es nur auf jeder Profilansicht einmal durchführen muss?

Many Dank!

C

Antwort : Grundlegendes Mathe in gespeichertem Verfahren Mitgliedstaat-SQL über drei Tabellen

Gut kann ich nicht sehen, welche datatypes Ihre Felder haben, aber sollte etwas wie das folgende sein.

Sie können ihn durchführen mögen dieses: EXEC UpdateECPC „campid“
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
Das varchar VERFAHREN UpdateECPC @camp_id VERURSACHEN (20)
WIE
ANFANGEN
	NOCOUNT AN EINSTELLEN
	@lead_sum int ERKLÄREN
	@page_views int ERKLÄREN
	@lead_sum EINSTELLEN = (AUSERWÄHLTE SUMME (lead_value) VON Table_A, WO camp_id = @camp_id)
	@page_views EINSTELLEN = (AUSERWÄHLTE page_views VON Table_B, WO camp_id = @camp_id)
	Table_C GESETZTES lead_eCPC = @lead_sum/@page_views AKTUALISIEREN IN DENEN camp_id = @camp_id
	NOCOUNT BEGINNEN
ENDE
Weitere Lösungen  
 
programming4us programming4us