I want to know if theres any other way to get all record from table 1 (users) and all the meta data on table 2 (user_meta), I'm using right now this way:
SELECT
u.id,
u.username,
u.email,
r.role,
(SELECT val FROM user_meta WHERE id_parent = u.id AND attr = 'sidebar_color' LIMIT 1) AS sidebar_color,
(SELECT val FROM user_meta WHERE id_parent = u.id AND attr = 'profile_pic' LIMIT 1) AS profile_pic,
(SELECT val FROM user_meta WHERE id_parent = u.id AND attr = 'thumbnail' LIMIT 1) AS thumbnail,
(SELECT val FROM user_meta WHERE id_parent = u.id AND attr = 'bg_img' LIMIT 1) AS bg_img,
(SELECT val FROM user_meta WHERE id_parent = u.id AND attr = 'bio' LIMIT 1) AS bio,
(SELECT val FROM user_meta WHERE id_parent = u.id AND attr = 'google' LIMIT 1) AS google,
(SELECT val FROM user_meta WHERE id_parent = u.id AND attr = 'facebook' LIMIT 1) AS facebook,
(SELECT val FROM user_meta WHERE id_parent = u.id AND attr = 'twitter' LIMIT 1) AS twitter,
(SELECT val FROM user_meta WHERE id_parent = u.id AND attr = 'whatsapp' LIMIT 1) AS whatsapp
FROM users u
LEFT JOIN roles r ON u.id_role = r.id
ORDER BY u.id
ASC
And well it's working, i get all data from all users but I would like another way around, because I will be using the same approach for a CRM but this one is gonna have so many meta data and it's gonna be a huge query to maintain.
Thank you.