|
| Group by - Fodboldstilling Fra : rane |
Dato : 30-10-03 15:00 |
|
Jeg har en fodbold-tabel der indeholder følgende:
| KampID | RundeNr | HjemmeholdID | UdeholdID | HjemmeMaal | UdeMaal | HjemmePts | UdePts|
KampID = Autonummering
RundeNr = Tal
HjemmeholdID = 101 til 116 (der er 16 hold)
UdeholdID = samme som ovenstående
HjemmeMaal = tal (antal mål scoret af hjemmeholdet i den kamp)
UdeMaal = tal (mål scoret af udeholdet)
HjemmePts = tal, 3, 1 eller 0 (points til hjemmeholdet i den kamp)
UdePts = samme
---
Dvs. hver række er info til 1 fodboldkamp.
---
Ud fra ovenstående vil jeg gerne have udarbejdet en tabel stilling,
dvs:
1. Hold103 15 Points ialt (evt. vundne, uafgjorte og tabte kampe)
2. Hold116 14 Points ialt (evt. vundne, uafgjorte og tabte kampe)
2. Hold107 11 Points ialt (evt. vundne, uafgjorte og tabte kampe)
....osv.
Det "tricky" her er at få lagt Hjemmebane resultater sammen med
Udebane resultater - og få udtrukket stillingen på den måde.
100 points til den der kan hjælpe med den nemmeste og hurtigste
løsning, der virker. 200 points til den, der kan hjælpe med en udvidet
løsning (dvs. vundne, uafgjorte og tabte kampe bliver udregnet og
skrevet ned også).
Regner med der skal bruges noget GROUP BY og ORDER BY - men det kan
vel ikke laves i én SQL-sætning?
mvh
Rene
(Dette indlæg har jeg også postet på eksperten.dk som et 200pts
spørgsmål)
| |
Torben Brandt (30-10-2003)
| Kommentar Fra : Torben Brandt |
Dato : 30-10-03 23:36 |
|
rane skrev:
> Jeg har en fodbold-tabel der indeholder følgende:
>
> | KampID | RundeNr | HjemmeholdID | UdeholdID | HjemmeMaal | UdeMaal | HjemmePts | UdePts|
>
> Ud fra ovenstående vil jeg gerne have udarbejdet en tabel stilling,
> dvs:
>
> 1. Hold103 15 Points ialt (evt. vundne, uafgjorte og tabte kampe)
> 2. Hold116 14 Points ialt (evt. vundne, uafgjorte og tabte kampe)
> 2. Hold107 11 Points ialt (evt. vundne, uafgjorte og tabte kampe)
> ...osv.
Jeg har bikset mig sammen til dette:
SELECT
holdid,
SUM(pts) AS points,
SUM(vnd) AS vundne
FROM
(
SELECT
hjemmeholdid AS holdid,
SUM(hjemmepts) AS pts,
- SUM(hjemmepts = 3) AS vnd
FROM Kampe
GROUP BY hjemmeholdid
UNION
SELECT
udeholdid AS holdid,
SUM(udepts) AS pts,
- SUM(udepts = 3) AS vnd
FROM Kampe
GROUP BY udeholdid
)
GROUP BY holdid
ORDER BY SUM(pts)
Du kan selv tilføje linier for uafgjorte og tabte kampe.
I Access 2003 (jeg antager du bruger Access - ?) svarer True til -1 og
False til 0, hvilket jeg benytter i
- SUM(hjemmepts = 3)
som så bliver antallet af gange hjemmepts er 3, dvs en sejr.
Er ikke klar over om det samme gælder, når man spørger fra ASP.
> 100 points til den der kan hjælpe med den nemmeste og hurtigste
>
> (Dette indlæg har jeg også postet på eksperten.dk som et 200pts
> spørgsmål)
Ja, men du kunne jo have klippet afsnittet med pointgivning væk...
Jeg har sat FUT til <news:dk.edb.database>, da det mest omhandler sql.
mvh Torben
| |
Torben Brandt (30-10-2003)
| Kommentar Fra : Torben Brandt |
Dato : 30-10-03 23:42 |
|
Torben Brandt skrev:
> Jeg har sat FUT til <news:dk.edb.database>, da det mest omhandler sql.
Tja, og så satte jeg FUT til <news:dk.edb.database.ms-access>, så vælg
selv...
(Intet FUT i dette indlæg)
/Torben
| |
|
|