Hem wp_users ve wp_usermeta tablolarından bir görünüm oluşturmak istiyorum, böylece harici bir uygulamadan görünümde satırları sorgulayabiliyorum. Temel kimlik bilgileri wp_users (ör. Kullanıcı adı, şifre, e-posta, kimlik) içinde saklanır ve diğer alanlar wp_usermeta tablosundaki anahtar/değer çiftlerinde saklanır.WordPress kullanıcıları ve birden fazla satırı bir tabloda bir satırda başka bir tabloya birleştirmek
wp_users tablo bu gibi yapılandırılmıştır:
id | login | password | email
-----------------------------
1 | bsmith| abc123 | [email protected]
2 | jjones| def456 | [email protected]
wp_usermeta tablo bu gibi yapılandırılmıştır: Bir MYSQL GÖRÜNÜM olarak böyle veriler oluşursa istiyorum
id | user_id | meta_key | meta_value
------------------------------------
1 | 1 | firstname| bob
2 | 1 | lastname | smith
3 | 1 | country | denmark
4 | 2 | firstname| jan
5 | 2 | lastname | jones
6 | 2 | country | germany
:
id | login | password | email | firstname | lastname | country
-----------------------------------------------------------------
1 | bsmith| abc123 | [email protected]| bob | smith | denmark
2 | jjones| def456 | [email protected]| jan | jones | germany
En azından wp_users ve wp_usermeta arasında bir iç birleştirme yapmam gerektiğini biliyorum. Bu satırları bir araya getirmek için wp_usermeta içinde bir alt sorgu gerçekleştirmeniz gerekir.
Ben kullanıcı satır almak için var sorgu elbette ölü kolaydır:
select u1.id, u1.login, u1.password, u1.email from wp_users u1
Bir satır olarak meta almak için sahip sorgu şudur:
select m1.user_id, m1.meta_value as firstname, m2.meta_value as lastname, m3.meta_value as country
from wp_usermeta m1
join wp_usermeta m2 on (m1.user_id = m2.user_id and m2.meta_key = 'last_name')
join wp_usermeta m3 on (m2.user_id = m3.user_id and m3.meta_key = 'country')
where m1.meta_key = 'first_name'
Yani bunu nasıl Bu iki sorguya birlikte katılıyorum - u1'in verileri ve satırın u1.id = m1.userid?
bazı meta_value özelliklerine dayalı olarak kullanıcılara arama planlıyorsunuz? eğer değilse, sadece tek bir serileştirilmiş meta_değer alanı (json kodlanmış veya php serileştirilmiş) özniteliklerini saklayabilirsin – Ben
@Ben: nope, veriyi etkileşimli olarak sorgulamak için harici bir uygulama bağlanacak – frumbert