Estoy usando WordPress, PhpMyAdmin, MySQL. También soy bastante novato en lo que respecta a SQL y bases de datos, así que tengan paciencia conmigo.
Tengo una tabla de datos personalizada (esta es una tabla maestra de información del usuario)que quiero relacionar bidireccionalmente con las tablas wp_users y wp_usermeta, lo que significa que si un usuario actualiza su perfil (usuarios o tablas Usermeta), la tabla de datos personalizados se actualizará automáticamente sin que yo tenga que ingresar manualmente su información actualizada.
Del mismo modo, si edito la Tabla de datos personalizada, quiero que la información relacionada en Usuarios y Usermeta se actualice automáticamente.
Traté de crear un diagrama aproximado de lo que está en mi cabeza. Diagrama de manejo de datos
El sistema actual es terrible y muy difícil de mantener. Otro problema es que hay muchos informes de SQL que utilizan la tabla de datos personalizada actual. Entiendo que la solución que estoy buscando probablemente signifique crear una tabla completamente nueva. Está bien.
User
–––––––––––––––––––
| ID | username |
|–––––+–––––––––––|
| 376 | John |
| 377 | Paul |
| 378 | Ringo |
–––––––––––––––––––
Usermeta
–––––––––––––––––––––––––––––––––––––––––––––
| meta_id | user_id | meta_key | meta_value |
|–––––––––+–––––––––+––––––––––+––––––––––––|
| 8 | 1 | job | Keys |
| 102 | 2 | job | Vocals |
| 203 | 3 | job | Drums |
–––––––––––––––––––––––––––––––––––––––––––––
Custom_Table
––––––––––––––––––––––––––––––––––––––
| ID | username | job | user_ID |
|––––+–––––––––––+–––––––––+–––––––––|
| 1 | John | Keys | 376 |
| 2 | Paul | Vocals | 377 |
| 3 | Ringo | Drums | 378 |
––––––––––––––––––––––––––––––––––––––
Básicamente, esto es lo que tengo una consulta (excepto que tengo muchas más líneas del usermeta):
CREATE TABLE custom_table
SELECT users.username,
MAX(CASE WHEN meta_key = 'job' THEN meta_value ELSE NULL END) AS job,
users.ID
FROM wp_users as users, wp_usermeta as umeta
WHERE umeta.user_id = users.ID
Esto crea la tabla que quiero, pero si alguna de las tablas se actualiza, no se ‘sincroniza’ en ningún otro lugar. es posible? ¿Se haría mediante algún tipo de disparador (todavía no estoy familiarizado con los disparadores)?
.