Voglio creare una vista da entrambe le tabelle wp_user e wp_usermeta in modo che sia possibile interrogare le righe nella vista da un'applicazione esterna. I dettagli dell'autenticazione di base sono memorizzati in wp_users (ad es. Nome utente, password, email, id) e altri campi sono memorizzati in coppie chiave/valore nella tabella wp_usermeta.Utenti Wordpress e usermeta - unione di più righe in una tabella in una riga in un'altra tabella
tabella wp_users è strutturato in questo modo:
id | login | password | email
-----------------------------
1 | bsmith| abc123 | [email protected]
2 | jjones| def456 | [email protected]
tabella wp_usermeta è strutturato in questo modo:
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
voglio finire con i dati di questo tipo come vista MYSQL:
id | login | password | email | firstname | lastname | country
-----------------------------------------------------------------
1 | bsmith| abc123 | [email protected]| bob | smith | denmark
2 | jjones| def456 | [email protected]| jan | jones | germany
So che devo fare almeno un collegamento interno tra wp_users e wp_usermeta, tuttavia anch'io è necessario eseguire una query secondaria all'interno di wp_usermeta per unire quelle righe insieme.
La query che ho per ottenere la fila utente è, naturalmente, morto facile:
select u1.id, u1.login, u1.password, u1.email from wp_users u1
La query che ho per ottenere la meta come una riga questo è:
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'
Così come si fa Mi unisco a queste due query insieme: i dati di u1 e la riga dove u1.id = m1.userid?
avete in programma di ricerca degli utenti sulla base di alcune proprietà meta_value? in caso contrario, è possibile archiviare gli attributi in un unico campo meta_value serializzato (codificato json o serializzato php) – Ben
@Ben: no, un'app esterna si collegherà per interrogare i dati in modo interattivo – frumbert