MySQL-如何将自定义表与user和usermeta表双向关联? -WordPress

问题描述 投票:0回答:1

我正在使用Wordpress,PhpMyAdmin,MySQL。关于SQL和数据库,我还是一个新手,请耐心等待。

我有一个自定义数据表(这是用户信息的主表),我想将其与wp_users和wp_usermeta表双向关联-这意味着如果用户更新其个人资料(Users或Usermeta表) ),那么自定义数据表将自动更新,而无需我手动输入其更新信息。

同样,如果我编辑自定义数据表,我希望用户和Usermeta中的相关信息能够自动更新。

我试图创建一个关于脑海中的粗略图。 Diagram of data handling

当前的系统非常糟糕,很难维护。另一个问题是,有许多使用当前自定义数据表的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     |
––––––––––––––––––––––––––––––––––––––

基本上,这就是我要查询的内容。[[(除了我有更多行的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
这会创建我想要的表,但是如果更新了任何表,则不会在其他任何地方“同步”。这可能吗?是否可以通过某种触发器来完成(我仍然不熟悉触发器)?
mysql wordpress phpmyadmin metadata bidirectional
1个回答
0
投票
只需使用视图而不是表。这使您可以始终以最新的视角查看实际数据,而无须任何维护成本(并且就其价值而言,也无需任何存储成本)。

create view custom_view as select u.username, um.meta_value as job u.id as user_id from wp_users as users u left join wp_usermeta as umeta um on um.user_id = u.ID and um.meta_key = 'job'

© www.soinside.com 2019 - 2024. All rights reserved.