On 2/2/09 8:24 AM, "cdg1111us" <cdg111...@yahoo.com> wrote:
> If I can follow correctly what you're doing here, I think this is what you
> need to do.
>
> Your tables:
>
> PICKS
> ---
> id (auto-increment, primary key -- add if you don't have it)
> userid
> gameid
> pickedteamid
> won (you need to add this column to your prev table)
>
> RESULTS
> ---
> id (auto-increment, primary key -- add if you don't have it)
> gameid
> winningteamid
>
> STATS (you need to add this table to your database)
> ---
> id (auto-increment, primary key)
> userid
> gamesplayed
> gameswon
> winpercentage
>
>
> First, update your picks table to show whether people have winning guess:
> update picks, results set picks.won = '1' where picks.pickedteamid =
> results.winnerid
>
> Then, load all new players into your STATS table:
> insert into stats (userid)
> SELECT DISTINCT picks.userid
> FROM picks
> WHERE picks.userid NOT
> IN (SELECT stats.userid
> FROM stats
> )
>
>
> Now, just update your STATS table:
> update stats, (SELECT userid, count( gameid ) as count
> FROM picks
> GROUP BY userid) as tmp set gamesplayed = count where stats.userid =
> tmp.userid
>
> update stats, (SELECT userid, count( won ) as count
> FROM picks where won='1'
> GROUP BY userid) as tmp set gameswon = count where stats.userid = tmp.userid
>
> update stats set winpercentage = (gameswon / gamesplayed)
>
> Your final SELECT:
> select userid, winpercentage, gamesplayed from stats order by winpercentage
> desc,
> gamesplayed desc
>
> Hope this helps!
>
> Ken Krauss
> KCWebDev
> http://www.kcwebdev.com
>
>
>
>
> --- In php_mysql@yahoogroups.com, "John Magee" <jema...@...> wrote:
>>
>> Ok
>>
>> I may have done this wrong - but I'm looking for some direction (not a
>> specific solution)
> to
>> see if I can fix what I've done.
>>
>> I've created a (what I thought at least) simple web site where players pick
>> the winners
> on
>> the daily NBA schedule.
>>
>> What I want to be able to do is list the 'standings' based on the percentage
>> of picks a
>> player has correct, and each player will have a different number of picks.
>>
>> I have a 'picks' table - the relevant fields
>> UserID
>> GameID
>> PickedTeamID
>>
>> I have a 'results' Table with the relevant fields
>> GameID
>> WinnerID
>>
>> What I need is a query that gets all the picks that a user has made - as a
>> sum/total -
> and
>> also gets the number of 'correct' (based on winner ID for gameID) picks a
>> user has made
>> so i can calculate the percent correct.
>>
>> I can write the PHP for an individual user - i could write the PHP to list
>> all the users in
> any
>> particular order - but what I want to list is based on that percentage which
>> means (I
> think)
>> that I need to have ALL the values in MySQL so i can order by before moving
>> to the PHP
> to
>> display the data (I calculate an individuals percentage using PHP
>> /SessionID)...
>>
>> I'm hoping i can get some help / direction here. I've tried some outer and
>> left and right
>> joins and either I worded them improperly or it's just not the right
>> direction.
>>
>> I also hope this makes sense.
>>
>
I did figure this out as I posted earlier using PHP and MySQL - however on a
mysql devoted forum (devshed.com) I was given a single line MySQL query that
does all the array work I did before - using case and subqueries which I
haven't been able to find tutorials on (CASE in a query that is) yet...i
went with getting it to work as quickly as possible but now I need to
rewrite the page.
Anyone interested the site is at
http://www.basketballjourney.com/PickEm/