Classifica sportiva

mercoledì 29 ottobre 2008 - 23.49

cispolo.ppl Profilo | Senior Member

Salve a tutti, avrei bisogno di creare una classifica calcistica (o meglio già pronte) che inserendo i risultati su un formview automaticamente viene calcolata (in sql). Esiste un metodo?
Grazie
Massimo

alx_81 Profilo | Guru

>Salve a tutti,
Ciao!
>avrei bisogno di creare una classifica calcistica
>(o meglio già pronte) che inserendo i risultati su un formview
>automaticamente viene calcolata (in sql). Esiste un metodo?
mmmmmh.. sinceramente mi sa proprio che te lo devi fare.. Quindi armati di pazienza e comincia ad analizzare gli oggetti che ti servono, impiegando all'inizio i tuoi sforzi su un design corretto e "normale" del database.. Di più non posso dirti
--

Alessandro Alpi | SQL Server MVP

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

cispolo.ppl Profilo | Senior Member

Io ho pensato di fare una tabella con i dati delle varie squadre (punti, vinte ecc...) e in una pagina metterci un sistema che inserendo i risultati delle partite (quelle dell'ultima giornata) il sistema automaticamente calcola i punti, le vittorie ecc...
Potrebbe funzionare?
Massimo

alx_81 Profilo | Guru

>Io ho pensato di fare una tabella con i dati delle varie squadre
>(punti, vinte ecc...) e in una pagina metterci un sistema che
>inserendo i risultati delle partite (quelle dell'ultima giornata)
>il sistema automaticamente calcola i punti, le vittorie ecc...
>Potrebbe funzionare?
Certo. Io approccerei più con calma ragionando sulle entità che servono.
Ad esempio una tabella SQUADRE in cui mettere tutte le squadre (se vuoi anche una tabella SPORT per gestire il multisport), una GIORNATE in cui mettere la squadra di casa e fuori e l'eventuale risultato per ogni giornata ed infine una procedura che ricava la CLASSIFICA dai ragionamenti fatti sulle GIORNATE.
--

Alessandro Alpi | SQL Server MVP

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

cispolo.ppl Profilo | Senior Member

c'è una procedura in sql che confronta i risultato di una partita?
Massimo

alx_81 Profilo | Guru

>c'è una procedura in sql che confronta i risultato di una partita?
Eh non credo.. te la devi fare tu..
Comunque direi che se le partite sono di calcio, sono tre casi.. Comunque puoi ragionare a formule.

--

Alessandro Alpi | SQL Server MVP

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

cispolo.ppl Profilo | Senior Member

si si...il confronto lo faccio io, ma prima devo sapere come scriverlo
Massimo

alx_81 Profilo | Guru

>si si...il confronto lo faccio io, ma prima devo sapere come scriverlo
Segni i risultati nella tabella giornate in due campi R1 e R2

Le formule saranno R1 > R2, se sì 3 punti alla squadra di casa, se no 3 a quella fuori.
Se R1 = R2 un punto a testa.
Nient'altro..
--

Alessandro Alpi | SQL Server MVP

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

cispolo.ppl Profilo | Senior Member

potresti farmi un'esempio, perchè non sono riuscito a fare molto...
Massimo

alx_81 Profilo | Guru

>potresti farmi un'esempio, perchè non sono riuscito a fare molto...
Ti faccio un esempio per SQL Server, almeno per farti capire la logica.
Creo tre tabelle, una SQUADRE, una SPORT ed una GIORNATE.
Poi le riempio ed infine calcolo i punti in casa e fuori (cercando di spezzarli per farti capire meglio).
Alla fine di tutto sommo i punti fuori e quelli in casa per ogni squadra.
USE tempdb; GO CREATE TABLE dbo.Squadre ( IDSquadra int IDENTITY(1,1) NOT NULL , Squadra varchar(30) NOT NULL , CONSTRAINT PK_dboSquadre PRIMARY KEY ( IDSquadra ) ) GO INSERT INTO dbo.Squadre (Squadra) VALUES ('Juventus') INSERT INTO dbo.Squadre (Squadra) VALUES ('Milan') INSERT INTO dbo.Squadre (Squadra) VALUES ('Inter') GO CREATE TABLE dbo.Sport ( IDSport tinyint NOT NULL , Sport varchar(30) NOT NULL , CONSTRAINT PK_dboSport PRIMARY KEY ( IDSport ) ) GO INSERT INTO dbo.Sport (IDSport, Sport) VALUES (1, 'Calcio') GO CREATE TABLE dbo.Giornate ( IDGiornata int IDENTITY(1,1) NOT NULL , Data smalldatetime NOT NULL , IDSport tinyint NOT NULL , IDSquadraCasa int NOT NULL , IDSquadraFuori int NOT NULL , R1 tinyint NOT NULL , R2 tinyint NOT NULL , CONSTRAINT PK_dboGiornate PRIMARY KEY ( IDGiornata ) ) GO INSERT INTO dbo.Giornate (Data, IDSport, IDSquadraCasa, IDSquadraFuori, R1, R2) VALUES ('20081101 15:30', 1, 1, 2, 2, 0) INSERT INTO dbo.Giornate (Data, IDSport, IDSquadraCasa, IDSquadraFuori, R1, R2) VALUES ('20081102 15:30', 1, 1, 3, 1, 1) INSERT INTO dbo.Giornate (Data, IDSport, IDSquadraCasa, IDSquadraFuori, R1, R2) VALUES ('20081103 15:30', 1, 2, 1, 0, 3) INSERT INTO dbo.Giornate (Data, IDSport, IDSquadraCasa, IDSquadraFuori, R1, R2) VALUES ('20081104 15:30', 1, 2, 3, 1, 0) INSERT INTO dbo.Giornate (Data, IDSport, IDSquadraCasa, IDSquadraFuori, R1, R2) VALUES ('20081105 15:30', 1, 3, 2, 2, 2) INSERT INTO dbo.Giornate (Data, IDSport, IDSquadraCasa, IDSquadraFuori, R1, R2) VALUES ('20081107 15:30', 1, 3, 1, 0, 0) GO SELECT G.Data , S.Sport , SquadraCasa = SC.Squadra , SquadraFuori = SF.Squadra , PunteggioCasa = G.R1 , PunteggioFuori = G.R2 FROM dbo.Giornate G JOIN dbo.Squadre SC ON SC.IDSquadra = G.IDSquadraCasa JOIN dbo.Squadre SF ON SF.IDSquadra = G.IDSquadraFuori JOIN dbo.Sport S ON S.IDSport = G.IDSport GO SELECT T1.IDSquadra , PuntiTotali = T1.Punti + T2.Punti FROM ( -- calcolo punti squadre casa SELECT SQ.IDSquadra , Punti = SUM(CASE WHEN G.R1 > G.R2 THEN 3 WHEN G.R1 = G.R2 THEN 1 ELSE 0 END) FROM dbo.Giornate G JOIN dbo.Squadre SQ ON SQ.IDSquadra = G.IDSquadraCasa GROUP BY SQ.IDSquadra , SQ.Squadra ) T1 JOIN ( -- calcolo punti squadre fuori SELECT SQ.IDSquadra , Punti = SUM(CASE WHEN G.R2 > G.R1 THEN 3 WHEN G.R1 = G.R2 THEN 1 ELSE 0 END) FROM dbo.Giornate G JOIN dbo.Squadre SQ ON SQ.IDSquadra = G.IDSquadraFuori GROUP BY SQ.IDSquadra , SQ.Squadra ) T2 ON T1.IDSquadra = T2.IDSquadra GO DROP TABLE dbo.Squadre DROP TABLE dbo.Sport DROP TABLE dbo.Giornate GO

--

Alessandro Alpi | SQL Server MVP

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

cispolo.ppl Profilo | Senior Member

domani provo e ti so dire.
grazie
Massimo

cispolo.ppl Profilo | Senior Member

ciao, scusa x il tempo richiesto ma ho fatto varie prove e non sono riuscito a combinare niente. Inizio ad essere abbastanza disperato.
Massimo

alx_81 Profilo | Guru

>ciao, scusa x il tempo richiesto ma ho fatto varie prove e non
>sono riuscito a combinare niente. Inizio ad essere abbastanza
>disperato.
Cosa intendi per "non sono riuscito a combinare niente". Cosa stai usando?
Cosa devi sviluppare? E' un sito? Un'applicazione Windows?
La parte che ti ho scritto io è solo una potenziale procedura su database..
Ed è praticamente già fatta.. c'è solo da ornarla con i tuoi dati..

--

Alessandro Alpi | SQL Server MVP

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

cispolo.ppl Profilo | Senior Member

Sto finendo un sito web, ma non sono riuscito ad inserire il codice tuo nei vari sqldatasource
Massimo

alx_81 Profilo | Guru

>Sto finendo un sito web, ma non sono riuscito ad inserire il
>codice tuo nei vari sqldatasource
Devi fare una stored procedure su SQL Server (usando SQL Server Management Studio).

CREATE PROCEDURE
http://msdn.microsoft.com/en-us/library/ms187926.aspx

E poi il SqlDataSource deve essere configurato così:

<asp:sqldatasource id="nome" runat="server" connectionstring="<%$ ConnectionStrings:TuoNomeSuWebConfig %>" selectcommand="nomestoredprocedure" selectcommandtype="StoredProcedure"> <selectparameters> ... </selectparameters> </asp:sqldatasource>


--

Alessandro Alpi | SQL Server MVP

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

cispolo.ppl Profilo | Senior Member

grazie x la dritta, ma avendo un solo sport (calcio), posso eliminare la tabella Sport?
Nella tua procedura c'è tempdb. Posso utilizzarla in un db creato da me?
Massimo

alx_81 Profilo | Guru

>grazie x la dritta, ma avendo un solo sport (calcio), posso eliminare
>la tabella Sport?
Se sei super sicuro (ma veramente) che non si aggiungano sport, toglila pure, anche se lasciarla con un solo record non ti cambia nulla, anzi, vedi mai che in futuro tu voglia sfruttare la struttura per altri sport..

>Nella tua procedura c'è tempdb. Posso utilizzarla in un db creato da me?
Delal mia procedura, ti serve solo la parte da mettere nella create procedure:

CREATE PROCEDURE dbo.proc_ClassificaGet AS BEGIN SET NOCOUN ON; SELECT T1.IDSquadra , PuntiTotali = T1.Punti + T2.Punti FROM ( -- calcolo punti squadre casa SELECT SQ.IDSquadra , Punti = SUM(CASE WHEN G.R1 > G.R2 THEN 3 WHEN G.R1 = G.R2 THEN 1 ELSE 0 END) FROM dbo.Giornate G JOIN dbo.Squadre SQ ON SQ.IDSquadra = G.IDSquadraCasa GROUP BY SQ.IDSquadra , SQ.Squadra ) T1 JOIN ( -- calcolo punti squadre fuori SELECT SQ.IDSquadra , Punti = SUM(CASE WHEN G.R2 > G.R1 THEN 3 WHEN G.R1 = G.R2 THEN 1 ELSE 0 END) FROM dbo.Giornate G JOIN dbo.Squadre SQ ON SQ.IDSquadra = G.IDSquadraFuori GROUP BY SQ.IDSquadra , SQ.Squadra ) T2 ON T1.IDSquadra = T2.IDSquadra END GO

e la procedura ti servirà solo per ricavare la classifica.
Se poi vuoi inserire ogni classifica diversa per ogni giornata , dovrai pensare ad una tabella CLASSIFICHE in cui mettere ogni giornata.
Se ti basta solo l'ultima, ti basta quella select.

--

Alessandro Alpi | SQL Server MVP

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

cispolo.ppl Profilo | Senior Member

Non capisco cosa sia T1.
Massimo

alx_81 Profilo | Guru

>Non capisco cosa sia T1.
T1 è un alias di tabella:

SELECT T1.campo FROM Tabella T1


--

Alessandro Alpi | SQL Server MVP

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

cispolo.ppl Profilo | Senior Member

quindi Squadre.dbo è un database?
Massimo

alx_81 Profilo | Guru

>quindi Squadre.dbo è un database?
no, intanto è dbo.Squadre ed è una TABELLA.

dbo è il suo SCHEMA, ovvero l'unità di raggruppamento delle tabelle. Andrebbe sempre indicato.
Puoi fare tutti gli schema che vuoi sul db, che ti danno un'identità logica agli oggetti (tabelle, viste, stored procedure, funzioni, ecc).

SQL Server Schema Design
http://blogs.technet.com/andrew/archive/2008/02/27/sql-server-schema-design.aspx



--

Alessandro Alpi | SQL Server MVP

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

cispolo.ppl Profilo | Senior Member

Dopo tutti i problemi ( x nn dire altro) che ti ho creato, non ci crederai ma finalmente funziona.
Ho soltanto un problemino da risolvere:
la procedura calcola i risultati dalla tabella Giornate, ma come faccio ad aggiornare la tabella Squadre così da poter creare la differenza gol?

alx_81 Profilo | Guru

>la procedura calcola i risultati dalla tabella Giornate, ma come
>faccio ad aggiornare la tabella Squadre così da poter creare
>la differenza gol?
Da questo deduco che nella tabella squadre hai messo anche le informazioni della classifica. Non hai seguito la normalizzazione che ti avevo proposto. Ok, è una scelta .
Avendo R1 ed R2, è facile sommare i gol fatti ed i gol subiti, la cui differenza è la differenza reti.
Devi sommare R1 ed R2 e raggruppare per la squadra di casa.
Devi sommare R1 ed R2 e raggruppare per la squadra fuori.
Infine devi sommare R1 della prima query con R2 della seconda ed R1 della seconda query con R2 della prima.
La differenza di quest'ultimo passo è la differenza reti.
Provaci

--

Alessandro Alpi | SQL Server MVP

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

cispolo.ppl Profilo | Senior Member

Ho messo tutte le informazioni perchè oltre ai punti devo visualizzare una classifica completa.
Infine ho visto che la stored procedure calcola i punti, ma non aggiorna la tabella squadre.

alx_81 Profilo | Guru

>Ho messo tutte le informazioni perchè oltre ai punti devo visualizzare
>una classifica completa.
>Infine ho visto che la stored procedure calcola i punti, ma non
>aggiorna la tabella squadre.
Ma allora piuttosto fai una tabella classifica. E' logicamente più corretto.
Comunque, la stored procedure calcola i punti totali. Ti serve storicizzare tutte le giornate? Non è così necessario salvare tutte le info se non ti servono.
Se invece necessiti di accedere alla classifica in una particolare giornata anche passata, allora devi salvarle.
In quel caso, basta fare una tabella classifica con tutti i campi che ti servono e poi partire come spunto dalla mia procedura per calcolare tutti gli n valori da inserire poi ad ogni giornata nella tabella classifica.


--

Alessandro Alpi | SQL Server MVP

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

cispolo.ppl Profilo | Senior Member

Delle giornate passate non mi interessa niente, volevo soltanto che calcolasse i punti (e questo funzione), ma che inoltre dopo aver fatto questo conto, aggiornasse la tabella Squadre (quella che contiene la classifica finale) in modo da avere un semplice gridview che visualizza tutte queste informazioni (punti, giocate ecc..)
Massimo

alx_81 Profilo | Guru

>Delle giornate passate non mi interessa niente, volevo soltanto
>che calcolasse i punti (e questo funzione), ma che inoltre dopo
>aver fatto questo conto, aggiornasse la tabella Squadre (quella
>che contiene la classifica finale) in modo da avere un semplice
>gridview che visualizza tutte queste informazioni (punti, giocate
>ecc..)
Cerco di spiegarmi meglio..
Se non ti interessa tenerti lo storico, usa la select semplicemente e quella è già la sorgente del tuo gridview.
In poche parole, con la stored procedure ricavi tutti i valori che ti servono, anche con più select e i risultati li metti in tabelle temporanee ad esempio..
Poi alla fine ricavi tutte le info per squadre con una select finale e quella è la source della griglia.

--

Alessandro Alpi | SQL Server MVP

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

cispolo.ppl Profilo | Senior Member

Ma il SELECT iniziale devo metterlo nella pagina che aggiorna i risultati (R1 e R2) o in quella che visualizza la classifica finale?
Massimo

alx_81 Profilo | Guru

>Ma il SELECT iniziale devo metterlo nella pagina che aggiorna
>i risultati (R1 e R2) o in quella che visualizza la classifica
>finale?
La SELECT che ti ho passato io è il calcolo dei punti per squadra.
Alla fine di ciò che ti ho passato hai i punti totali per squadra, fin qui ci sei?
Ecco, ora devi fare simili operazioni, per ottenere non solo i punti, ma i gol fatti e quelli subiti, i pareggi, le vittorie, le sconfitte, ecc..
Io passerei da tabelle temporanee e poi alla fine farei una bella JOIN per squadra per ottenere tutte le info.
Purtroppo non ho il tempo materiale per farti un esempio definito.
Intanto prova, poi appena riesco ti faccio vedere un esempio più concreto

--

Alessandro Alpi | SQL Server MVP

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

cispolo.ppl Profilo | Senior Member

Grazie.
Massimo

alx_81 Profilo | Guru

>Grazie.
Dai.. mi sono trovato 5 minuti..
Innanzitutto le strutture sono quelle che ti ho proposto all'inizio, e poi dai un'occhiata a questo:

CREATE PROCEDURE dbo.proc_CalcolaClassifica AS BEGIN SET NOCOUNT ON; -- tabelle di appoggio (variabili tabella, simili a temporanee) DECLARE @Punti TABLE ( IDSquadra int NOT NULL , Punti smallint NOT NULL , Vittorie smallint NOT NULL , Sconfitte smallint NOT NULL , Pareggi smallint NOT NULL , PRIMARY KEY (IDSquadra) ) DECLARE @Goals TABLE ( IDSquadra int NOT NULL , GolFatti smallint NOT NULL , GolSubiti smallint NOT NULL , PRIMARY KEY (IDSquadra) ) -- popolo i punti INSERT INTO @Punti (IDSquadra, Punti, Vittorie, Sconfitte , Pareggi) SELECT T1.IDSquadra , PuntiTotali = T1.Punti + T2.Punti , VittorieTotali = T1.Vittorie + T2.Vittorie , SconfitteTotali = T1.Sconfitte + T2.Sconfitte , PareggiTotali = T1.Pareggi + T2.Pareggi FROM ( -- calcolo punti squadre casa SELECT SQ.IDSquadra , Punti = SUM(CASE WHEN G.R1 > G.R2 THEN 3 WHEN G.R1 = G.R2 THEN 1 ELSE 0 END) , Vittorie = SUM(CASE WHEN G.R1 > G.R2 THEN 1 ELSE 0 END) , Pareggi = SUM(CASE WHEN G.R1 = G.R2 THEN 1 ELSE 0 END) , Sconfitte = SUM(CASE WHEN G.R1 < G.R2 THEN 1 ELSE 0 END) FROM dbo.Giornate G JOIN dbo.Squadre SQ ON SQ.IDSquadra = G.IDSquadraCasa GROUP BY SQ.IDSquadra ) T1 JOIN ( -- calcolo punti squadre fuori SELECT SQ.IDSquadra , Punti = SUM(CASE WHEN G.R2 > G.R1 THEN 3 WHEN G.R1 = G.R2 THEN 1 ELSE 0 END) , Vittorie = SUM(CASE WHEN G.R2 > G.R1 THEN 1 ELSE 0 END) , Pareggi = SUM(CASE WHEN G.R2 = G.R1 THEN 1 ELSE 0 END) , Sconfitte = SUM(CASE WHEN G.R2 < G.R1 THEN 1 ELSE 0 END) FROM dbo.Giornate G JOIN dbo.Squadre SQ ON SQ.IDSquadra = G.IDSquadraFuori GROUP BY SQ.IDSquadra ) T2 ON T1.IDSquadra = T2.IDSquadra -- popolo i goals INSERT INTO @Goals (IDSquadra, GolFatti, GolSubiti) SELECT T1.IDSquadra , GolFattiTotali = T1.GoalsFatti + T2.GoalsFatti , GolSubitiTotali = T2.GoalsSubiti + T1.GoalsSubiti FROM ( -- calcolo punti squadre casa SELECT SQ.IDSquadra , GoalsFatti = SUM(G.R1) , GoalsSubiti = SUM(G.R2) FROM dbo.Giornate G JOIN dbo.Squadre SQ ON SQ.IDSquadra = G.IDSquadraCasa GROUP BY SQ.IDSquadra ) T1 JOIN ( -- calcolo punti squadre fuori SELECT SQ.IDSquadra , GoalsFatti = SUM(G.R2) , GoalsSubiti = SUM(G.R1) FROM dbo.Giornate G JOIN dbo.Squadre SQ ON SQ.IDSquadra = G.IDSquadraFuori GROUP BY SQ.IDSquadra ) T2 ON T1.IDSquadra = T2.IDSquadra -- OUTPUT SELECT S.Squadra , P.Punti , P.Vittorie , P.Sconfitte , P.Pareggi , G.GolFatti , G.GolSubiti FROM @Goals G JOIN @Punti P ON P.IDSquadra = G.IDSquadra JOIN dbo.Squadre S ON S.IDSquadra = P.IDSquadra ORDER BY S.Squadra END GO
--

Alessandro Alpi | SQL Server MVP

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

cispolo.ppl Profilo | Senior Member

ora calcolo la differenza reti

cispolo.ppl Profilo | Senior Member

per calcolare la differenza ho fatto così:
INSERT INTO @Goals (IDSquadra, GolFatti, GolSubiti, GolDiff) SELECT T1.IDSquadra , GolFattiTotali = T1.GoalsFatti + T2.GoalsFatti , GolSubitiTotali = T2.GoalsSubiti + T1.GoalsSubiti , GolDiffTotali = (T1.GoalsFatti + T2.GoalsFatti) - (T2.GoalsSubiti + T1.GoalsSubiti)
se inserisco nella tabella giornate le partite future, in R1 e R2 cosa devo metterci?
Massimo

alx_81 Profilo | Guru

>se inserisco nella tabella giornate le partite future, in R1 e R2 cosa devo metterci?
La procedura calcola su tutto il contenuto della tabella giornate.. Infatti io ho inserito come esempio l'elenco di alcune giornate. Non capisco il senso della domanda.. A meno che tu non intenda mettere le giornate già pronte senza il risultato.. In quel caso, ti conviene farti una tabella calendario dove metti IdSquadraCasa, IdSquadraFuori, Stagione (che è ad esempio 2009, ovvero l'anno), NumeroGiornata. Lì metti tutto il calendario, e, giornata per giornata, copi il contenuto nella tabella Giornate (quelle effettive).
Se invece vuoi mettere già tutto il calendario nella tua tabella, valorizza R1 ed R2 a -1 ed escludi dai filtri i record dove il valore è -1.

--

Alessandro Alpi | SQL Server MVP

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

cispolo.ppl Profilo | Senior Member

Ok, ora lo faccio. Ma il calcolo della differenza è giusto?
Massimo

alx_81 Profilo | Guru

>Ok, ora lo faccio. Ma il calcolo della differenza è giusto?
Sì, corretto

--

Alessandro Alpi | SQL Server MVP

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

cispolo.ppl Profilo | Senior Member

Per calcolare le giornate giocate, credo che dovrei contare quante volte un ID in casa e fuori viene scritto. Come si fa????
Massimo

cispolo.ppl Profilo | Senior Member

Ciao, se ho più di una categoria (esempio: Prima Squadra, Serie Z eccc...) come si filtrano le informazioni per creare per ogunana di queste categorie la classifica corrispondente (e relative partite giocate)?
Massimo

alx_81 Profilo | Guru

>Per calcolare le giornate giocate, credo che dovrei contare quante volte un ID in casa e fuori viene scritto. Come si fa????
Cominciamo da questa. Se ti ricordi all'inizio ti chiedevo se ti serviva uno storico delle giornate. Ora ho capito che ti serviva .
Quindi, per ogni giornata calcolata, devi inserire l'ourput della mi stored procedure all'interno di una tabella "Giornate".
Facendo una count su tutti i record della suddetta tabella (che sarà corredata di un'informazione Anno o Stagione) filtrando per stagione, otterrai le giornate.

>se ho più di una categoria (esempio: Prima Squadra, Serie
>Z eccc...) come si filtrano le informazioni per creare per ogunana
>di queste categorie la classifica corrispondente (e relative
>partite giocate)?
Sempre nella tabella giornate, dovrai inserire l'idcategoria ed una relazione con una nuova tabella "Categorie".
Per filtrare è sufficiente poi fare la WHERE sull'idcategoria.

Purtroppo il tuo progetto sta mancando un po' di analisi preventiva accurata..

--

Alessandro Alpi | SQL Server MVP

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

cispolo.ppl Profilo | Senior Member

Grazie x la pazienza...ma io sono uno di quelli che "vanno a tentativi" (ultimalmente un po' meno)
Ciao
Massimo

alx_81 Profilo | Guru

>Grazie x la pazienza...ma io sono uno di quelli che "vanno a
>tentativi" (ultimalmente un po' meno)
Ma figurati.. Anzi, dobbiamo arrivarci in fondo no?
Fammi sapere
--

Alessandro Alpi | SQL Server MVP

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

cispolo.ppl Profilo | Senior Member

Certamente. Ma come hai fatto a caricare il nome della squadra partendo dal suo ID???
Massimo

alx_81 Profilo | Guru

>Certamente. Ma come hai fatto a caricare il nome della squadra
>partendo dal suo ID???
Cosa significa questa domanda?

--

Alessandro Alpi | SQL Server MVP

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

sankyu Profilo | Senior Member

Scusa Alx ma non dovrebbe prima disegnarsi gli oggetti del sistema e lasciar fare a quelli il calcolo dei vari punteggi?? fatto tutto in sql è molto figo ma lo vedo duro da mantenere!
ps: io ho dovuto fare un intera procedura contabile di un bilancio in Tsql su sql server 2000 alla fine ero soddisfatto ma è stato un suicidio!! ne approfitto esiste il debug delle stored procedure con i breakpoint?? se si mi daresti un link? grazie!

alx_81 Profilo | Guru

>Scusa Alx ma non dovrebbe prima disegnarsi gli oggetti del sistema
>e lasciar fare a quelli il calcolo dei vari punteggi?? fatto
>tutto in sql è molto figo ma lo vedo duro da mantenere!
E chi mai gli ha detto di fare tutto in SQL? Se leggi il post dall'inizio, sto consigliando di fare un'analisi come si deve. Ed è lui che mi sta spiegando che conoscendo poco il mondo, sta un pochino facendo passo dopo passo.
Le entità logiche che gli ho indicato nei primi post deve crearli come tabelle. Per quanto riguarda i calcoli, essendo molto semplici ed intuitivi, direi che è corretto lasciarli sulle stored procedure. Anzi, le trovo comunque manutenibili in questo caso. Perchè fare dei cicli applicativi per avere dei risultati che posso ottenere mediante istruzioni SET BASED? Le stored procedure sono moduli e se un metodo di una classe le lancia, è leggibile e manutenibile, anzi, ti puoi anche risparmiare la ricompilazione in certi casi.

>ps: io ho dovuto fare un intera procedura contabile di un bilancio
>in Tsql su sql server 2000 alla fine ero soddisfatto ma è stato
>un suicidio!!
Beh, permettimi di dire che dipende come l'hai fatta. Non voglio giudicare un lavoro che non ho visto, ma la complessità di un tale calcolo è notevole, comunque la si implementi.
Combinando programmabilità di t-sql e statement SQL puoi farla sia in SQL che tramite un Business Layer di una tua applicazione..

>ne approfitto esiste il debug delle stored procedure
>con i breakpoint?? se si mi daresti un link?
http://www.sqlteam.com/article/debugging-stored-procedures-in-visual-studio-2005

>grazie!
Di nulla!
--

Alessandro Alpi | SQL Server MVP

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

cispolo.ppl Profilo | Senior Member

>>Certamente. Ma come hai fatto a caricare il nome della squadra
>>partendo dal suo ID???
>Cosa significa questa domanda?
>
Nella stored procedure che hai fatto tu (l'ultima), viene mostrato il nome della squadra, invece nella prima veniva caricato l'ID. Volevo capire come hai fatto.
>--
>
>Alessandro Alpi | SQL Server MVP
>
>http://www.alessandroalpi.net
>http://blogs.dotnethell.it/suxstellino
>http://mvp.support.microsoft.com/profile/Alessandro.Alpi
>http://italy.mvps.org

Massimo

alx_81 Profilo | Guru

>Nella stored procedure che hai fatto tu (l'ultima), viene mostrato
>il nome della squadra, invece nella prima veniva caricato l'ID.
>Volevo capire come hai fatto.
-- OUTPUT SELECT S.Squadra , P.Punti , P.Vittorie , P.Sconfitte , P.Pareggi , G.GolFatti , G.GolSubiti FROM @Goals G JOIN @Punti P ON P.IDSquadra = G.IDSquadra JOIN dbo.Squadre S ON S.IDSquadra = P.IDSquadra ORDER BY S.Squadra

una semplice JOIN con la tabella dbo.SQUADRE..

--

Alessandro Alpi | SQL Server MVP

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

cispolo.ppl Profilo | Senior Member

Grazie perchè sto tentando di creare una nuova procedura per scrivere il calendario completo e uno con le partite di una squadra in particolare.
Massimo
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5