I have 2 tables.
Table 1 - user account info
# Table "users" DDL
CREATE TABLE users (
user_id int(5) NOT NULL auto_increment,
user_type varchar(20) NOT NULL default 'City Dweller',
first_name varchar(50) NOT NULL default '',
last_name varchar(50) NOT NULL default '',
business varchar(100) NOT NULL default '',
email varchar(40) NOT NULL default '',
address1 varchar(30) NOT NULL default '',
address2 varchar(30) NOT NULL default '',
city varchar(30) NOT NULL default '',
state char(2) NOT NULL default '',
zip varchar(5) NOT NULL default '',
county varchar(255) NOT NULL default '',
mls varchar(100) NOT NULL default '',
newsletter char(1) NOT NULL default 'N',
date datetime NOT NULL default '0000-00-00 00:00:00',
username varchar(20) NOT NULL default '',
password varchar(255) NOT NULL default '',
thumb varchar(255) NOT NULL default 'images/person3.png',
pic varchar(255) NOT NULL default 'images/person2.png',
photo varchar(255) NOT NULL default 'images/person1.png',
thumb1 varchar(255) NOT NULL default 'images/person3.png',
photo1 varchar(255) NOT NULL default 'images/person1.png',
thumb2 varchar(255) NOT NULL default 'images/person3.png',
photo2 varchar(255) NOT NULL default 'images/person1.png',
thumb3 varchar(255) NOT NULL default 'images/person3.png',
photo3 varchar(255) NOT NULL default 'images/person1.png',
thumb4 varchar(255) NOT NULL default 'images/person3.png',
photo4 varchar(255) NOT NULL default 'images/person1.png',
PRIMARY KEY (user_id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
Table 2 - user activities with points value
# Table "bricks" DDL
CREATE TABLE bricks (
brick_id int(10) NOT NULL auto_increment,
user_id int(8) NOT NULL default '0',
brick_type varchar(255) NOT NULL default '',
brick_num int(11) NOT NULL default '0',
brick_date datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (brick_id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
Each time a user performs a specific activity a new row is created in the "Bricks" table saving the user_id, the activity, and a point value for the activity.
I can get the number of points for User1 by:
$query1 = "SELECT SUM(brick_num) FROM bricks WHERE user_id='1'";
I now want to show User1 that they are ranked X out of XX total users.
What is the best way for me to select the sum of bricks for all other users and count the number of rows where the sum of bricks is less than the sum for User1?
Seems like GROUP BY might help but Im just not clear how to handle the grouped data.
Thanks