Reputation: 111
Below is the query which works fine however Status column can have several values per user and I only want the row with the most recent date. This is in another column called modified in the wp_memberships_users table. I'm new to Mysql - I'm thinking maybe max on the modified column but unsure how to achieve this
This runs but lists some users multiple times with many values for status - I only want the most recent
SELECT
e.user_id,
e.status,
m1.meta_value as fname,
m2.meta_value as lname,
m3.meta_value as company
FROM
wp_memberships_users e
LEFT JOIN wp_usermeta m ON e.user_ID = m.user_id AND m.meta_key = '1'
LEFT JOIN wp_usermeta m1 ON e.user_ID = m1.user_id AND m1.meta_key LIKE 'first_name'
LEFT JOIN wp_usermeta m2 ON e.user_ID = m2.user_id AND m2.meta_key LIKE 'last_name'
LEFT JOIN wp_usermeta m3 ON e.user_ID = m3.user_id AND m3.meta_key LIKE 'company_name'
WHERE
e.status = "active" OR e.status = 'expired'
I tried this but still returns multiple status for each user
SELECT
e.user_id,
e.status,
e.modified,
m1.meta_value as fname,
m2.meta_value as lname,
m3.meta_value as company
FROM
wp_memberships_users e
LEFT JOIN wp_usermeta m ON e.user_ID = m.user_id AND m.meta_key = '1'
LEFT JOIN wp_usermeta m1 ON e.user_ID = m1.user_id AND m1.meta_key LIKE 'first_name'
LEFT JOIN wp_usermeta m2 ON e.user_ID = m2.user_id AND m2.meta_key LIKE 'last_name'
LEFT JOIN wp_usermeta m3 ON e.user_ID = m3.user_id AND m3.meta_key LIKE 'company_name'
WHERE
(e.user_id, e.modified) IN (SELECT e.user_id, MAX (e.modified)
FROM wp__memberships_users
GROUP BY e.user_id)
Upvotes: 1
Views: 25