>Beh, la classifica è quella classica;
>una tabella con tutte le partite dove indicare i risultati ed
>automaticamente calcolare i punti
>una tabella che mi ordina e mi aggiorna le squadre a seconda
>del punteggio ottenuto.
>Ma non riesco a coordinare i dati scusami
ma figurati.. è solo che posso esserti di aiuto solo a livello macroscopico..
Comunque, io vedo le seguenti tabelle:
Squadre
IDSquadra intero autoincrementante e chiave primaria
Nome stringa
NumeroGiocatoriRosa intero
... (altri dati che ti servono)
Partite
IDPartita intero autoincrementante e chiave primaria
IDSquadra1 intero
IDSquadra2 intero
Data DataOra
PunteggioSquadra1 intero
PunteggioSquadra2 intero
La classifica può essere una query fatta al volo, senza salvare i dati su di una tabella. L'esempio è SQL SERVER.
La parte che ti interessa è l'ultima query, ricorda che dovrai sostituire la CASE con la funzione IIF (IIF(condizione, allora, altrimenti)):
USE tempdb;
GO
CREATE TABLE dbo.Squadre
(
IDSquadra int IDENTITY(1,1) NOT NULL
, Nome varchar(30) NOT NULL
, Provenienza varchar(20) NOT NULL
, NumeroGiocatori tinyint NOT NULL
, CONSTRAINT PK_Squadre PRIMARY KEY CLUSTERED
(
IDSquadra
)
)
GO
CREATE TABLE dbo.Partite
(
IDPartita int IDENTITY(1,1) NOT NULL
, IDSquadraCasa int NOT NULL
, IDSquadraFuori int NOT NULL
, Data smalldatetime NOT NULL
, RisultatoCasa tinyint NOT NULL
, RisultatoFuori tinyint NOT NULL
, CONSTRAINT PK_Partite PRIMARY KEY CLUSTERED
(
IDPartita
)
)
GO
INSERT INTO dbo.Squadre (Nome, Provenienza, NumeroGiocatori)
VALUES ('U.S. Medesanese', 'Medesano', 20)
INSERT INTO dbo.Squadre (Nome, Provenienza, NumeroGiocatori)
VALUES ('F.C. Noceto', 'Noceto', 20)
INSERT INTO dbo.Squadre (Nome, Provenienza, NumeroGiocatori)
VALUES ('A.C. Fornovo', 'Fornovo', 20)
INSERT INTO dbo.Squadre (Nome, Provenienza, NumeroGiocatori)
VALUES ('Fidentina', 'Fidenza', 20)
GO
INSERT INTO dbo.Partite (IDSquadraCasa, IDSquadraFuori, Data, RisultatoCasa, RisultatoFuori)
VALUES (1, 2, GETDATE(), 2, 0)
INSERT INTO dbo.Partite (IDSquadraCasa, IDSquadraFuori, Data, RisultatoCasa, RisultatoFuori)
VALUES (2, 1, GETDATE(), 0, 1)
INSERT INTO dbo.Partite (IDSquadraCasa, IDSquadraFuori, Data, RisultatoCasa, RisultatoFuori)
VALUES (1, 3, GETDATE(), 3, 1)
INSERT INTO dbo.Partite (IDSquadraCasa, IDSquadraFuori, Data, RisultatoCasa, RisultatoFuori)
VALUES (3, 1, GETDATE(), 1, 2)
INSERT INTO dbo.Partite (IDSquadraCasa, IDSquadraFuori, Data, RisultatoCasa, RisultatoFuori)
VALUES (1, 4, GETDATE(), 0, 0)
INSERT INTO dbo.Partite (IDSquadraCasa, IDSquadraFuori, Data, RisultatoCasa, RisultatoFuori)
VALUES (4, 1, GETDATE(), 2, 4)
INSERT INTO dbo.Partite (IDSquadraCasa, IDSquadraFuori, Data, RisultatoCasa, RisultatoFuori)
VALUES (2, 3, GETDATE(), 1, 1)
INSERT INTO dbo.Partite (IDSquadraCasa, IDSquadraFuori, Data, RisultatoCasa, RisultatoFuori)
VALUES (3, 2, GETDATE(), 3, 1)
INSERT INTO dbo.Partite (IDSquadraCasa, IDSquadraFuori, Data, RisultatoCasa, RisultatoFuori)
VALUES (2, 4, GETDATE(), 1, 0)
INSERT INTO dbo.Partite (IDSquadraCasa, IDSquadraFuori, Data, RisultatoCasa, RisultatoFuori)
VALUES (4, 2, GETDATE(), 2, 2)
INSERT INTO dbo.Partite (IDSquadraCasa, IDSquadraFuori, Data, RisultatoCasa, RisultatoFuori)
VALUES (3, 4, GETDATE(), 4, 0)
INSERT INTO dbo.Partite (IDSquadraCasa, IDSquadraFuori, Data, RisultatoCasa, RisultatoFuori)
VALUES (4, 3, GETDATE(), 2, 3)
GO
---- casa
SELECT
T.Squadra
, SUM(T.Vinte) AS Vinte
, SUM(T.Perse) AS Perse
, SUM(T.Nulle) AS Nulle
, SUM(T.GolFatti) AS GolFatti
, SUM(T.GolSubiti) AS GolSubiti
, SUM(T.Vinte * 3 + T.Nulle) AS Punti
FROM
(
SELECT
S.Nome AS Squadra
, SUM(CASE WHEN P.RisultatoCasa > P.RisultatoFuori THEN 1 ELSE 0 END) AS Vinte
, SUM(CASE WHEN P.RisultatoCasa < P.RisultatoFuori THEN 1 ELSE 0 END) AS Perse
, SUM(CASE WHEN P.RisultatoCasa = P.RisultatoFuori THEN 1 ELSE 0 END) AS Nulle
, SUM(P.RisultatoCasa) AS GolFatti
, SUM(P.RisultatoFuori) AS GolSubiti
FROM
dbo.Squadre S
JOIN dbo.Partite P ON P.IDSquadraCasa = S.IDSquadra
GROUP BY
S.Nome
UNION
SELECT
S.Nome AS Squadra
, SUM(CASE WHEN P.RisultatoCasa < P.RisultatoFuori THEN 1 ELSE 0 END) AS Vinte
, SUM(CASE WHEN P.RisultatoCasa > P.RisultatoFuori THEN 1 ELSE 0 END) AS Perse
, SUM(CASE WHEN P.RisultatoCasa = P.RisultatoFuori THEN 1 ELSE 0 END) AS Nulle
, SUM(P.RisultatoFuori) AS GolSubiti
, SUM(P.RisultatoCasa) AS GolFatti
FROM
dbo.Squadre S
JOIN dbo.Partite P ON P.IDSquadraFuori = S.IDSquadra
GROUP BY
S.Nome
) AS T
GROUP BY
T.Squadra
ORDER BY
Punti DESC
-- pulizia
DROP TABLE dbo.Partite
DROP TABLE dbo.Squadre
GO
In poche parole faccio una subquery che è l'unione di due altre query che rispettivamente tornano le vinte, le perse, i pareggi, i gol fatti ed i subiti prima in casa e poi fuori. A monte la query "master" raggruppa il risultato della subquery e somma sia i dati ricavati nella query nidificata sia il numero delle vinte e delle nulle per ottenere il punteggio. Se non sbaglio, sostituendo la CASE con la IIF, la query dovrebbe già essere pronta.
Scusami ma non ho access in questo momento..
Ciao!
Alx81 =)
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org