Я использую Wordpress, PhpMyAdmin, MySQL. Я также новичок, когда дело доходит до SQL и баз данных, так что несите меня.
У меня есть настраиваемая таблица данных (это основная таблица пользовательской информации) , которая Я хочу иметь двунаправленную связь с таблицами wp_users и wp_usermeta - это означает, что если пользователь обновляет свой профиль (таблицы Users или Usermeta), то настраиваемая таблица данных будет автоматически обновляться без необходимости вручную вводить их обновленную информацию.
Точно так же, если я редактирую таблицу пользовательских данных, я хочу, чтобы соответствующая информация в Users и Usermeta автоматически обновлялась.
Я попытался создать приблизительную диаграмму того, что у меня в голове. Схема обработки данных
Текущая система ужасна и очень сложна в обслуживании. Другая проблема заключается в том, что существует множество отчетов SQL, в которых используется текущая настраиваемая таблица данных. Я понимаю, что решение, которое я ищу, скорее всего, означает создание совершенно новой таблицы. Все нормально.
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 |
––––––––––––––––––––––––––––––––––––––
По сути, это то, что у меня есть запрос (за исключением того, что у меня гораздо больше строк пользовательской меты) :
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
Это создает таблицу I хотите, но если какая-либо из таблиц обновлена, она больше нигде не синхронизируется. Это возможно? Будет ли это сделано с помощью какого-то триггера (я все еще не знаком с триггерами)?