arbitter Posted July 23, 2013 Share Posted July 23, 2013 My table 'guess': id (int) | user_id (int) | logo_id (int) | guess (varchar) | guess_count (int) | guessed (int) id is unique, unique relation between user_id & logo_id When a user visits the site, a user is made in a 'users' table (so there's a new user_id). The user can then play with this user_id. When the user logs in, the current scores/guesses/... should be transferred to the user_id of the logged in-account. How do I get this done? To clarify: there are two user_id's in play - the user_id from the registered (logged in) user, and the user_id from the session (not logged in). I will refer to these as user_id_login and user_id_session. So, if a row of user_id_login has a guessed = 1 (this int is 0/1. 1 means guessed, 0 means not guessed) for certain logo_id, a row with that logo_id and the user_id_session should be completely ignored. If a row of user_id_login = 0 for certain logo_id exists, the values 'guess_count', 'guessed' and 'guess' of the row with the same logo_id and with user_id_session should be added (for guess_count) or stored (guessed & guess). If a row with user_id_session for certain logo_id exists and hasn't been checked in one of the previous, the user_id of this should be changed from user_id_session to user_id_login. Now how I currently would think about doing this, is check the table for the user_id_login where guessed = 1. For each result, then do a query to check if there is a user_id_session with that logo_id and remove them. Next, check the table for the user_id_login with guessed = 0. For each result, then check if there is a user_id_session with the same logo_id and add those values, then delete that row. And at last, a query to check all the leftover user_id_session and change the id to user_id_login. As you can see, this is dozens of query's, so there must be a better way Link to comment https://forums.phpfreaks.com/topic/280418-merging-multiple-rows/ Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.