Estrarre Posizione in una Classifica di un record (ASP.NET + SQL SERVE...

martedì 31 agosto 2010 - 05.32
Tag Elenco Tags  VB.NET  |  .NET 2.0  |  SQL Server 2005

gsistemi Profilo | Junior Member

Salve,

sto tentando di risolvere un problema con un approccio un po' più "professionale"!!!

Ho una tabella "classifica" dove ho il nome della squadra e i punti.

Ora ho bisogno, richiamando la scheda della singola squadra di far visualizzare la posizione nella tabella "classifica".

Per il momento faccio una SELECT così:

SELECT ROW_NUMBER() OVER ( ORDER BY punti DESC, squadra ) AS posizione, squadra FROM classifica

poi leggo con un ciclo tutti i record fino a trovare la squadra che mi interessa e ricavarne la posizione.

Un'altra soluzione che ho trovato è quella di generare una tabella temporanea e leggere poi il singolo record ma non mi sembra granchè.

In entrambi i casi funziona ma vorrei provare a gestire il tutto con un altro approccio che mi consenta di non leggere tutti i record ogni volta.

Sto utilizzando vb.net e sql server 2005

Saluti a tutti!

alx_81 Profilo | Guru

>Salve,
Ciao

>Ora ho bisogno, richiamando la scheda della singola squadra di
>far visualizzare la posizione nella tabella "classifica".
>
>SELECT ROW_NUMBER() OVER ( ORDER BY punti DESC, squadra ) AS
>posizione, squadra FROM classifica
>poi leggo con un ciclo tutti i record fino a trovare la squadra
>che mi interessa e ricavarne la posizione.
Spero di aver capito il problema, che ne pensi di questa soluzione?
USE tempdb; GO CREATE TABLE #Classifica ( IDSquadra int NOT NULL , Punti smallint NOT NULL DEFAULT(0) , RetiFatte smallint NOT NULL DEFAULT(0) , RetiSubite smallint NOT NULL DEFAULT(0) , Gialli smallint NOT NULL DEFAULT(0) , Rossi smallint NOT NULL DEFAULT(0) , CONSTRAINT PK_TempClassifica PRIMARY KEY CLUSTERED ( IDSquadra ) ) GO CREATE TABLE #Squadre ( IDSquadra int NOT NULL , Nome varchar(50) NOT NULL , CONSTRAINT PK_TempSquadre PRIMARY KEY CLUSTERED ( IDSquadra ) ) GO INSERT INTO #Squadre (IDSquadra, Nome) VALUES (1, 'Juventus') INSERT INTO #Squadre (IDSquadra, Nome) VALUES (2, 'Inter') INSERT INTO #Squadre (IDSquadra, Nome) VALUES (3, 'Milan') INSERT INTO #Squadre (IDSquadra, Nome) VALUES (4, 'Roma') INSERT INTO #Squadre (IDSquadra, Nome) VALUES (5, 'Lazio') INSERT INTO #Squadre (IDSquadra, Nome) VALUES (6, 'Parma') INSERT INTO #Squadre (IDSquadra, Nome) VALUES (7, 'Fiorentina') INSERT INTO #Squadre (IDSquadra, Nome) VALUES (8, 'Napoli') GO INSERT INTO #Classifica (IDSquadra, Punti, RetiFatte, RetiSubite, Gialli, Rossi) VALUES (1, 10, 5, 2, 2, 2) INSERT INTO #Classifica (IDSquadra, Punti, RetiFatte, RetiSubite, Gialli, Rossi) VALUES (2, 20, 10, 1, 3, 2) INSERT INTO #Classifica (IDSquadra, Punti, RetiFatte, RetiSubite, Gialli, Rossi) VALUES (3, 15, 4, 2, 3, 2) INSERT INTO #Classifica (IDSquadra, Punti, RetiFatte, RetiSubite, Gialli, Rossi) VALUES (4, 7, 4, 2, 3, 2) INSERT INTO #Classifica (IDSquadra, Punti, RetiFatte, RetiSubite, Gialli, Rossi) VALUES (5, 7, 3, 2, 3, 2) INSERT INTO #Classifica (IDSquadra, Punti, RetiFatte, RetiSubite, Gialli, Rossi) VALUES (6, 8, 4, 3, 3, 3) INSERT INTO #Classifica (IDSquadra, Punti, RetiFatte, RetiSubite, Gialli, Rossi) VALUES (7, 2, 1, 1, 3, 3) INSERT INTO #Classifica (IDSquadra, Punti, RetiFatte, RetiSubite, Gialli, Rossi) VALUES (8, 0, 0, 5, 3, 3) GO SELECT T.* FROM ( SELECT S.Nome , C.Punti , C.RetiFatte , C.RetiSubite , C.Gialli , C.Rossi , C.IDSquadra , Posizione = RANK() OVER(ORDER BY Punti DESC) FROM #Classifica C JOIN #Squadre S ON C.IDSquadra = S.IDSquadra ) T WHERE T.IDSquadra = 3 DROP TABLE #Classifica GO DROP TABLE #Squadre GO
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

gsistemi Profilo | Junior Member

ok a parte l'Inter prima in classifica ok... ho risolto con l'ultima SELECT!

Grazie!!!

alx_81 Profilo | Guru

>ok a parte l'Inter prima in classifica ok... ho risolto con l'ultima SELECT!
ahahaha, guarda, ho cercato di essere semplicemente realista , nemmeno tifo più
Se ti è stata di aiuto, accetta la risposta così chiudiamo il thread

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5