>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