आप इसे join
. के साथ कर सकते हैं और एक group by
:
select u.*, firstname, lastname
from user u join
(select uf.user_id,
max(case when key = 'firstname' then value end) as firstname,
max(case when key = 'lastname' then value end) as lastname
from user_field uf
group by user_id
) uf
on uf.user_id = u.id;
आप इसे जुड़ने के क्रम के साथ भी कर सकते हैं:
select u.*. firstname.value, lastname.value
from user u join
user_field firstname
on u.id = firstname.user_id and firstname.key = 'firstname' join
user_field lastname
on u.id = lastname.user_id and lastname.key = 'lastname';
आपका परिणाम इसे केवल एक उपयोगकर्ता आईडी तक सीमित करता प्रतीत होता है। आप शायद एक where
want चाहते हैं इस फिल्टर के साथ क्लॉज।