Aanschouw hier mijn 2 tabellen voor de score geschiedenis voor m'n wk 2006 pool. De rest van de tabellen zal ik maar achterwegen laten want die zijn niet belangrijk.

tblusers:
Gegevens van de gebruikers
tbluserscores
Scoregeschiedenis per dag, per gebruiker. Hierin staat dus hoeveelste de gebruiker gisteren was en wat toen zijn score was. Dit is een bult redundantie, maar deze tabel is onvermijdelijk om een goede scoregeschiedenis snel uit te draaien.
Query:
Wat moet de query (eigenlijk) doen:
De scores ophalen van de laatste speeldag gesorteerd op USC_Position vervolgens USC_TodayScore. Elke gebruiker mag maar 1x in het rijtje voorkomen.
Wat krijg ik nu:
Verschillende speeldagen en scores door elkaar.
Ik heb al flink liggen rommelen met MAX(), DISTINCT() en GROUP BY er tussen te zetten, maar kom er nu niet meer uit.
De distinct en group by declaraties zullen vast niet goed zijn.
Als ik MAX(UNIX_TIMESTAMP(USC_Date)) AS aDate doe krijg ik de goede datum, maar toch de oude scores.
Om alle scores in 7 nested query's te draaien vind ik 'n beetje vies. Ook kan ik er alles wel op php niveau eruit filteren, maar ik vind dat een query het goede terug moet parsen.
Ik hoop dat het een beetje duidelijk is...
tblusers:
Gegevens van de gebruikers
tbluserscores
Scoregeschiedenis per dag, per gebruiker. Hierin staat dus hoeveelste de gebruiker gisteren was en wat toen zijn score was. Dit is een bult redundantie, maar deze tabel is onvermijdelijk om een goede scoregeschiedenis snel uit te draaien.
Query:
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| SELECT DISTINCT(USR_ID), USR_Nickname, USR_Name, USR_Midname, USR_Surname, USC_Position, USC_OldPosition, USC_OldScore, USC_TodayScore, USC_Score, USC_TodayPosition, UNIX_TIMESTAMP(USC_Date) AS aDate FROM tblusers INNER JOIN tbluserscores ON tblusers.USR_ID = tbluserscores.USC_UsersID WHERE USC_Type = 'Poolgroup' AND USR_PoolgroupID = '3' AND USR_Visible = '1' GROUP BY USR_ID ORDER BY USC_Position, USC_TodayScore |
Wat moet de query (eigenlijk) doen:
De scores ophalen van de laatste speeldag gesorteerd op USC_Position vervolgens USC_TodayScore. Elke gebruiker mag maar 1x in het rijtje voorkomen.
Wat krijg ik nu:
Verschillende speeldagen en scores door elkaar.
Ik heb al flink liggen rommelen met MAX(), DISTINCT() en GROUP BY er tussen te zetten, maar kom er nu niet meer uit.
De distinct en group by declaraties zullen vast niet goed zijn.
Als ik MAX(UNIX_TIMESTAMP(USC_Date)) AS aDate doe krijg ik de goede datum, maar toch de oude scores.
Om alle scores in 7 nested query's te draaien vind ik 'n beetje vies. Ook kan ik er alles wel op php niveau eruit filteren, maar ik vind dat een query het goede terug moet parsen.
Ik hoop dat het een beetje duidelijk is...
[ Voor 10% gewijzigd door DDemolition op 02-05-2006 19:37 ]
Specs: Server, WS boven, WS beneden