I figured out the solution. I added 2 columns rank
and prev_user
in both tables, and incremented the value for rank
from 1 for the first record for user_x to n for the nth record for user_x, as below:
ALTER TABLE users ADD COLUMN rank tinyInt(1);
ALTER TABLE users ADD COLUMN prevuser varchar(50);
SET @prevuser = '';
SET @rank = 0;
UPDATE users
SET rank = (@rank:=IF(@prevuser != user,1,@rank+1)),
prevuser = (@prevuser := user)
ORDER BY user,id;
ALTER TABLE users DROP COLUMN prevuser;
and,
ALTER TABLE logs ADD COLUMN rank tinyInt(1);
ALTER TABLE logs ADD COLUMN prevuser varchar(50);
SET @prevuser = '';
SET @rank = 0;
UPDATE logs
SET rank = (@rank:=IF(@prevuser != user,1,@rank+1)),
prevuser = (@prevuser := user)
ORDER BY user,id;
ALTER TABLE logs DROP COLUMN prevuser;
Now records can be matched between the tables using user
& rank
. I added the field log_id
to users
and updated it as below:
UPDATE users, logs SET users.log_id=logs.log_id WHERE users.user=logs.user AND users.rank = logs.rank;
And voila!