0

I have written a function to get all the users details from a 2 table. This is the code

//get all the diff each users
    $db->query("SELECT DISTINCT (user_fb_id )FROM users_points WHERE users_points.match_id >= '$matchId'");
    $distinctUsers = $db->resultsArray;

        foreach($distinctUsers as $key=>$user){

            $db->query("SELECT SUM(points) AS totalPoints FROM users_points WHERE user_fb_id = '{$user['user_fb_id']}' AND match_id >= '$matchId' ORDER BY totalPoints DESC");

            $result[$key]['user_fb_id'] = $user['user_fb_id'];
            $totalPoint = $db->resultsArray;
            $result[$key]['totalPoints'] = $totalPoint[0]['totalPoints'];
            $db->query("SELECT user_firstName, user_lastName FROM user WHERE user_fb_id = '{$user['user_fb_id']}'");

            $userDetail = $db->resultsArray;
            $result[$key]['user_name'] = $userDetail[0]['user_firstName'].' '.$userDetail[0]['user_lastName'];

        }

    return $result;

using this function i can get users details. but not in an order. It should be sorted DESC.

How can to write single query for this function, instead of having 3 quires.?

or else,

how to sort the array 'totalPoints'?

1

1 Answer 1

1

Here's a basic join query to combine all three into one.

SELECT DISTINCT u.user_fb_id, SUM(u.points) as total_points, r.user_firstname, r.user_lastname 
FROM user_points u, user r 
WHERE u.match_id >= 2300 AND r.user_id = u.user_fb_id 
ORDER BY total_points DESC;

This may not be the most optimized query, but it's oodles faster than looping with three. Definitely play around with it.

Sign up to request clarification or add additional context in comments.

1 Comment

above query returns empty result set. I changed the match_id according to my db

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.