Spil database

Tags:    php

Hej
Vi har et "managerspil" i den lokale fodboldklub som fungere helt fint i et excelark, men vil gerne have stillingen ud på vores hjemmeside, men mangler lige lidt hjælp:-)

Hvert hold består af 6 spillere, 1 målmand ,2 forsvar, 2 midtbane og 1 angriber

Jeg har lavet følgende tabeller:
Profiles (fra vores spillerdatabase)
ProfileID
Name
Placering

Runde
rundeid
ProfileID
point

hold
holdid
navn
ProfileID_M
ProfileID_F1
ProfileID_F2
ProfileID_M1
ProfileID_M2
ProfileID_A

det er meningen at vi bare taster antal point for hver spiller ind i rundetabellen via php

nu kommer problemer så... hvordan får jeg mysql til at lægge spillerens point sammen for alle runderne og lægger point sammen for de spillere et hold har?

i må meget gerne komme med forslag i php:-)

og hvis mine tabeller er helt væk så kom endelig med forslag!

(Er også postet i sql...)



Indlæg senest redigeret d. 29.12.2008 16:57 af Bruger #10467
10 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 5 karma
Sorter efter stemmer Sorter efter dato
hver spillers point:
SELECT SUM(point) FROM Runde GROUP BY ProfileID

kan ikke lige gennemskue hvordan man skulle kunne lave den anden sql på din opbygning, uden at skulle lave 6 joins men den samme tabel.

Ville muligvis være lettere hvis du lave en tabel med hold spillere, så ville det være noget i retning af.

SELECT p.s FROM holdspillere AS h LEFT JOIN (SELECT SUM(point) AS s,ProfileID FROM Runde GROUP BY ProfileID) AS p ON(p.ProfileId=h.ProfileId) ORDER BY h.holdid

holdspillere
holdid
ProfileId
placering<--M F1 F2 etc..



Du kan bruge mysql's sum funktion.
For den enkelte spiller ser det sådan ud:
Select sum(point) from `Runde` where ProfileID = SPILLERID



Jeg ville nok lave et tabeldesign a la nedestående. :) Så kan man også lave en masse sjov med det hele.
Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 30.12.2008 00:41 af Bruger #10216
wow det var hurtigt:-)

men jeg er nu ikke helt med...

det jeg skal bruge er en total for hvert holdid!

der er 12 runder hvor hver spiller (profileID) får point. så jeg skal have lagt det antal point som de 6 spillere på holdet får sammen i alle 12 runder...? forstår i?



Følge mit foregående foreslag om at du lavede endnu en tabel burde dette give dig det du ønsker...i teorien har ikke testet det :)
SELECT SUM(p.s),h.holdid FROM holdspillere AS h LEFT JOIN (SELECT SUM(point) AS s,ProfileID FROM Runde GROUP BY ProfileID) AS p ON(p.ProfileID=h.ProfileId) GROUP BY h.holdid



Nørden og Michael, tak for jeres svar! jeg tror jeg prøve at lave om i mine tabeller, jeg kommer vist ud i nogle lidt for lange forespørgsler...

jeg vender tilbage når jeg har prøvet mig lidt frem:-)



jeg har fået det til at virke, men med en anden kode...

Fold kodeboks ind/udKode 


og
Fold kodeboks ind/udKode 


men hvordan får jeg den nu til at returnere hold navn istederfor id?



har du prøvet bare at skrive navn i queryen?



ja men problemer er at runder jo ikke indeholder holdnavn... den ligger i tabellen hold?!



hold.navn så? ville have ment at navn virker da du jo joiner runder og hold, hvis ingen af dem virker kan du jjo spekulere på om din join virker.



t