Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[SQL] Opslaan punten en berekenen competitie resultaten *

Pagina: 1
Acties:
  • 111 views sinds 30-01-2008
  • Reageer

  • R3m3d7
  • Registratie: Juli 2007
  • Laatst online: 20:55
Heren..en eventuele dames :) ,

Ik heb ben een leuk projectje gestart voor een race club waar ik bij betrokken ben.
Het idee is een webbased systeem te maken waar race resultaten in kunnen worden geplaatst en deze automatisch standen in kampioenschappen bij gaat houden evenals historische gegevens van elke race ooit ingevoerd.
Nu heb ik gekozen voor php/mysql omdat ik hier veel goed over las en ik toch al redelijk handig was met linux..een goed platform daarvoor had ik begrepen.

Ik ben een heel eind gekomen met me tabellen en me forms, ik kan races invoeren, competities aanmaken, dropdown menu's om rijders aan races te koppelen..dat gaat allemaal prima.

Nu het volgende, standen in een kampioenschap, daar gaat het mis.
Ik heb een tabel met de punten waardering gemaakt en een tabel met de race resultaten, deze moeten gecombineerd een formule maken waarmee ik de actuele stand kan weergeven op een pagina.

Ik heb om het duidelijk te maken hoe ik het gemaakt heb een google document gepublished, die is nu als html te beworderen met daarop de tabellen, als jullie me mischien hiermee zouden kunnen helpen wordt dat enorm gewaardeerd.

Link naar pagina met tabellen ;

http://spreadsheets.googl...y=pNJb9hIO2hlDraDx2nbDGdw

Bedankt.

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

Waar loop je precies op vast ?
Hoe ver ben je al gekomen met het maken van de bijbehorende query ?

  • R3m3d7
  • Registratie: Juli 2007
  • Laatst online: 20:55
TheRookie schreef op zondag 23 september 2007 @ 10:22:
Waar loop je precies op vast ?
Hoe ver ben je al gekomen met het maken van de bijbehorende query ?
Ik loop vast op het punt dat ik de tabellen heb en de gegevens erin heb staan zoals in de google docs beschreven en dan moet beginnen met een...select ?
Ik weet niet hoe ik een berekening kan maken anders dan een count op een select doen, het is ineens veel complexer dan wat eenvoudige selects of inserts in de database.

  • Paxlie
  • Registratie: Oktober 2000
  • Laatst online: 23-11-2024

Paxlie

chaos en inslag

http://www.keithjbrown.co.uk/vworks/mysql/mysql_p9.php

gevonden naar aanleiding van dit google-commando:
http://www.google.nl/sear...official&client=firefox-a

dat was je zelf ook wel gelukt als je een beetje had gezocht :*

Wie werd waar wanneer geboren en waarom werd hij door wie hoe genoemd?
braque© zijn is een keuze


  • R3m3d7
  • Registratie: Juli 2007
  • Laatst online: 20:55
Paxlie schreef op zondag 23 september 2007 @ 14:30:
http://www.keithjbrown.co.uk/vworks/mysql/mysql_p9.php

gevonden naar aanleiding van dit google-commando:
http://www.google.nl/sear...official&client=firefox-a

dat was je zelf ook wel gelukt als je een beetje had gezocht :*
Ja..dat had ik inderdaad zelf ook kunnen vinden, maar dit is niet meer dan een lijst van wat funkties.
Dit is niet hoe ik mijn commando moet bouwen, ik heb iets persoonlijkere hulp nodig voor dit probleempje..

  • Paxlie
  • Registratie: Oktober 2000
  • Laatst online: 23-11-2024

Paxlie

chaos en inslag

AIXGOD schreef op zondag 23 september 2007 @ 14:54:
[...]


Ja..dat had ik inderdaad zelf ook kunnen vinden, maar dit is niet meer dan een lijst van wat funkties.
Dit is niet hoe ik mijn commando moet bouwen, ik heb iets persoonlijkere hulp nodig voor dit probleempje..
leg dan eens uit wat je zoekt. Je kan programmeren toch?
Dus dan kan je ook per rij iets uitrekenen in php of iets dergelijks. Ik ga het niet voor je uitkauwen in ieder geval :)

Wie werd waar wanneer geboren en waarom werd hij door wie hoe genoemd?
braque© zijn is een keuze


  • R3m3d7
  • Registratie: Juli 2007
  • Laatst online: 20:55
Ik zoek een functie waarbij ik kan doen wat ik het volgende kan doen.
Ik heb tabel A en tabel B, tabel A bevat namen in colommen en tabel B bevat punten voor posities.
Nu wil ik een pagina genereren die de klassering van alle races berekend over de puntentelling zoals ingevoerd in tabel B.

Ik heb me best gedaan dit logisch weer te geven in de link in me eerste post.

En over het kunnen programmeren, ik heb gezegd dat dit me eerste mysql/php klusje is, dus nee, niet echt..ik ben het aan het leren maar loop hier op vast en heb hulp nodig van iemand die me doorheen kan helpen.

  • RaZ
  • Registratie: November 2000
  • Niet online

RaZ

Funky Cold Medina

AIXGOD schreef op zondag 23 september 2007 @ 15:44:
[..]
En over het kunnen programmeren, ik heb gezegd dat dit me eerste mysql/php klusje is, dus nee, niet echt..
Dus moet je eens op ph.net en op mysql.com de handleidingen gaan lezen.
ik ben het aan het leren maar loop hier op vast en heb hulp nodig van iemand die me doorheen kan helpen.
De handleiding kan dat prima..

Kortom: Wat werkt er niet in jouw code, en laat die code zien, en geef foutmeldingen die je krijgt ook voor het gemak..

Ey!! Macarena \o/


  • Paxlie
  • Registratie: Oktober 2000
  • Laatst online: 23-11-2024

Paxlie

chaos en inslag

AIXGOD schreef op zondag 23 september 2007 @ 15:44:
Ik zoek een functie waarbij ik kan doen wat ik het volgende kan doen.
Ik heb tabel A en tabel B, tabel A bevat namen in colommen en tabel B bevat punten voor posities.
Nu wil ik een pagina genereren die de klassering van alle races berekend over de puntentelling zoals ingevoerd in tabel B.

Ik heb me best gedaan dit logisch weer te geven in de link in me eerste post.

En over het kunnen programmeren, ik heb gezegd dat dit me eerste mysql/php klusje is, dus nee, niet echt..ik ben het aan het leren maar loop hier op vast en heb hulp nodig van iemand die me doorheen kan helpen.
het klinkt als 2 losstaande tabellen zonder onderlinge relatie. Echt duidelijk wordt het nog steeds niet. Wat heb je in ieder geval zelf al geprobeerd?

Wie werd waar wanneer geboren en waarom werd hij door wie hoe genoemd?
braque© zijn is een keuze


  • frickY
  • Registratie: Juli 2001
  • Laatst online: 27-11 09:24
Wat doet iedereen stug zeg? Die kerel heeft het voor elkaar gekregen zonder vragen zijn eerste php/mysql projectje op te zetten, dus je mag er van uit gaan dat hij wel weet wat zoeken is.
Kun je hem toch hoogstens een zetje in de goede richting geven als hij er echt niet uit komt?

@TS
Je bent opzoek naar JOINs, waarmee je 2 of meer tabellen met elkaar verweeft en zo de gegevens kunt combineren. Zoals
SQL:
1
2
3
SELECT c.naam, SUM(p.punten) AS totaalpunten
FROM coureurs AS c
LEFT JOIN punten AS p ON p.coureurID = c.coureurID

  • TheWickedD
  • Registratie: Juli 2002
  • Laatst online: 02-04-2024
EDIT: Ok, boven mij was een expert mij vol, maar ik denk dat wat ik hieronder scrhijf wel een betere opzet is voor je tabellen. Je kunt in plaats van positie natuurlijk ook gewoon meteen punten in de tabel gooien, maar dan ben je niet meer flexibel achteraf.

-----

Ik heb ook nauwelijks ervaring, maar dit lijkt mij makkelijker:

1 tabel met daarin de informatie over de coureurs. dan kun je dat allemaal terughalen aan de hand van hun id.

1 tabel met daarin informatie over de verschillende races (competities noem je ze?). in ieder geval een id.

1 tabel voor uitslagen met daarin kolommen: competitionid, coureurid (kun je dus linken aan die andere tabel) en positie van die coureur voor die race.

Ik neem aan dat de punten voor de verschillende posities per race gelijk zijn, dan hoef je die niet in een tabel te gooien maar kun je ze als constanten in php gebruken (als de php manual even na op constanten).

Voor die fastest lap ook even een aparte tabel nemen.

Dan kun je je score grofweg als volgt doen. Een select uit je uitslagen tabel met where coureurid = een nummer. dan krijg je all hun posities terug en kan je dus wat mij betreft een loopje erop loslaten om hun score uit te rekenen. Loop door alle coureurs (die je uit je coureurs-tabel trekt) en sorteer de punten. hatsa.

[ Voor 11% gewijzigd door TheWickedD op 23-09-2007 16:01 . Reden: de experts hebben gesproken ]


  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Denk dat je het beste zo'n structuur kan maken:

1) Coureurs
Hier hoort in:
coureur_id
coureur_naam
coureur_land
coureur_land_herkomst
coureur_plaats
coureur_naw
coureur_team_id
coureur_competitie_id

2) Teams
Hier hoort:
team_id
team_naam
team_land
team_plaats
team_naw
team_competitie_id

3) Competities
Hier hoort in:
competitie_id
competitie_naam

4) Circuits
Hier hoort in:
circuit_id
circuit_naam
circuit_land
circuit_plaats
circuit_naw

5) Uitslagen
Hier hoort in:
date_driven
competitie_id
circuit_id
plek_1
plek_2
plek_3
plek_4
plek_5
plek_6
plek_7
plek_8
plek_9
plek_10

Waar plek_x uiteraard als waarde de coureur_id heeft.
Het moge duidelijk zijn, waar de FK's komen te liggen en de PK's... :)
Als dat niet het geval is, let me know, steek ik er wel wat meer werk in... ;)

Wel interessant dit, denk dat ik ook zoiets ga maken voor hier thuis... :)

[ Voor 4% gewijzigd door CH4OS op 23-09-2007 16:36 ]


  • Eskimootje
  • Registratie: Maart 2002
  • Laatst online: 23:05
GJ-tje schreef op zondag 23 september 2007 @ 16:32:
Denk dat je het beste zo'n structuur kan maken:

Waar plek_x uiteraard als waarde de coureur_id heeft.
Het moge duidelijk zijn, waar de FK's komen te liggen en de PK's... :)
Als dat niet het geval is, let me know, steek ik er wel wat meer werk in... ;)
Dit lijkt me niet echt de juiste structuur.

Waarom de tabelnaam elke keer opnieuw toevoegen? En waarom de tabel layout met plek_1 plek_2 etc. tot hoever gaat dat door?

Doe gewoon plek koppelen met race en coureur en je bent klaar.

5. Race
Id
Date
Competitie_id
Locatie_id

6.Uitslag
race_id
coureur_id
plek

[ Voor 6% gewijzigd door Eskimootje op 23-09-2007 16:37 ]


  • R3m3d7
  • Registratie: Juli 2007
  • Laatst online: 20:55
Heren, bedankt voor de response.
Ik ga eens aan de slag met wat ik van Fricky heb gekregen.
The Wicked, de reden dat ik meerdere tabellen hebt gemaakt is om inderdaad niet later alleen maar punten terug te kunnen vinden maar ook posities, maar als ik het niet anders voor mekaar zou krijgen kan ik jou idee ook nog proberen.

Dit was precies het zetje wat ik even nodig had, ik ga d'r mee aan de slag ! :)

Edit, zie nu ineens nog veel meer reply's...bedankt allemaal !

[ Voor 7% gewijzigd door R3m3d7 op 23-09-2007 16:38 ]


  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Eskimootje schreef op zondag 23 september 2007 @ 16:35:
Dit lijkt me niet echt de juiste structuur.

Waarom de tabelnaam elke keer opnieuw toevoegen? En waarom de tabel layout met plek_1 plek_2 etc. tot hoever gaat dat door?

Door gewoon plek koppelen met race en coureur en je bent klaar.
Je wilt toch ook een history hebben? :?
Dan moet je de uitslagen in een aparte tabel zetten... Anders kan je de tabel maar 1x gebruiken, wat niet de bedoeling is lijkt me? :)
Tot hoever het doorgaat varieert natuurlijk, ben maar tot tien gegaan, in de F1 is P10 de laatste plek voor 1 punt dacht ik (en die zijn toch wel het interessants om te weten)
Eskimootje schreef op zondag 23 september 2007 @ 16:35:
5. Race
Id
Date
Competitie_id
Locatie_id

6.Uitslag
race_id
coureur_id
plek
Is natuurlijk wel dubbelop nu.
Je kan toch (in mijn voorbeeld) aan de hand van de uitslagen al zien, op welk circuit dat geweest is? :?

[ Voor 19% gewijzigd door CH4OS op 23-09-2007 16:43 ]


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 15:10

Creepy

Tactical Espionage Splatterer

GJ-tje: pak er even wat documentatie bij over normaliseren. Zodra zaken zich gaan herhalen in 1 tabel (plek1, plek2, plek3, plek4, etc.) zijn dat zaken die direct in een andere tabel opgenomen kunnen worden. Een tabelstructuur aanraden met daarin de kolommen plek1 tot en met plek10 is niet goed.
De gegevens koppel je op basis van een race die op een bepaald moment op een circuit is gehouden, niet op een circuit waar toevallig is geraced. Ook op die manier kan je history bijhouden.

AIXGOD: zou je Programming Beleid en dan met name Programming Beleid - De Quickstart eens door willen lezen? Zo kan je completere informatie geven in je topic en hoeft er niet een paar posts besteedt te worden met het vragen naar zaken als wat je zelf nu hebt en wat nu precies je doel is. Daarnaast zegt je topic titel helemaal niks over je daadwerkelijke probleem. Hoe we een topictitel wel willen zien staat duidelijk uitgelegd in *** Over topictitels in PRG - lezen voor topic openen!!! ***. Ik hen je topictitel dan ook aangepast. Mocht je zelf nog een betere weten geef dat dan aub aan via een Topic Report :)

[ Voor 8% gewijzigd door Creepy op 23-09-2007 17:09 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Creepy schreef op zondag 23 september 2007 @ 17:07:
GJ-tje: pak er even wat documentatie bij over normaliseren. Zodra zaken zich gaan herhalen in 1 tabel (plek1, plek2, plek3, plek4, etc.) zijn dat zaken die direct in een andere tabel opgenomen kunnen worden. Een tabelstructuur aanraden met daarin de kolommen plek1 tot en met plek10 is niet goed.
De gegevens koppel je op basis van een race die op een bepaald moment op een circuit is gehouden, niet op een circuit waar toevallig is geraced. Ook op die manier kan je history bijhouden.
Ik snap je posting niet helemaal. Het eerste gedeelte snap ik, heb wel eea over normaliseren gelezen, maar ben ook niet de perfectionist daar in
(logisch, ik ben ook maar mensje, toch wel ja :+)

Kan je je posting misschien uitleggen aan de hand van een voorbeeldje?

  • Eskimootje
  • Registratie: Maart 2002
  • Laatst online: 23:05
GJ-tje schreef op zondag 23 september 2007 @ 16:38:
[...]
Je wilt toch ook een history hebben? :?
Dan moet je de uitslagen in een aparte tabel zetten... Anders kan je de tabel maar 1x gebruiken, wat niet de bedoeling is lijkt me? :)
Tot hoever het doorgaat varieert natuurlijk, ben maar tot tien gegaan, in de F1 is P10 de laatste plek voor 1 punt dacht ik (en die zijn toch wel het interessants om te weten)
[...]
Is natuurlijk wel dubbelop nu.
Je kan toch (in mijn voorbeeld) aan de hand van de uitslagen al zien, op welk circuit dat geweest is? :?
Iets wat varieert in je tabel structuur is meestal niet de beste oplossing. In mijn oplossing zal de structuur altijd hetzelfde blijven.

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 15:10

Creepy

Tactical Espionage Splatterer

De oplossing die Eskimootje post (een race tabel waarin ook een datum staat en een uitslag tabel die daaraan is gelinkt) is wat ik ook probeer uit te leggen in mijn post :) Van elke race kunnen alle plekken worden bijgehouden inclusief de datum van die race. Dus alles blijft bewaard en je hebt gelijk je historische data.

En wat eskimootje ook zegt: het voordeel is dat de tabel niet hoeft te veranderen, of je nu 3, 10 of 100 plekken wilt vasthouden.

Overigens: je vraag of de oplossing van Eskimootje dubbelop is ontgaat me ook eigenlijk, er wordt volgens mij niks dubbel opgeslagen.

[ Voor 13% gewijzigd door Creepy op 24-09-2007 12:25 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • R3m3d7
  • Registratie: Juli 2007
  • Laatst online: 20:55
Ik ben het nu zo aan het maken dat ik iets heb als

results ;
driver_name | league_name | race_position | qualy_position | points_scored

legues;
league_name | race_position_01 | race_position_02

(en dan in de position velden de punten per positie)

En wanneer ik nu een resultaat invoer kijkt hij even de league tabel, zoekt daar het aantal punten dat die finish waard is op en voert dat in in de results tabel naast de posities.

Het is wel een serieus klusje iets als dit maken, ik merk dat ik snel op zoek ga naar manier om er structuur in te brengen om het overzicht te houden.
Ik leer d'r in ieder geval veel van en dat was het idee, ik heb veel respect voor mensen die hiermee grote sites bouwen. _/-\o_

Ik ga lekker verder klussen...

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 30-11 11:35

Janoz

Moderator Devschuur®

!litemod

Een nummering van de kolommen is alvast een teken van fout datamodel. Verder zie ik in je eerste tabel ook een berg afgeleide velden die je eigenlijk niet in de tabel op zou moeten slaan.

Probeer eerst de entiteiten eens te bepalen en daarna de relaties. Uiteindelijk kun je hier alle gegevens weer uit afleiden.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'

Pagina: 1