我在wordpress数据库中有两个表。 一个表是"用户"并包含列: ID,user_url,user_email
我需要将其加入第二个表格" usermeta"其中包含列: user_ID,meta_key,meta_value但需要首先连接行。
user_id meta_key meta_value
1 first_name Joe
1 last_name Smith
2 first_name Jane
2 last_name Doe
需要成为
user_id meta_key meta_value
1 first_name,last_name Joe,Smith
2 first_name,last_name Jane,Doe
我已经能够使用以下方式加入表:
$result = mysql_query("SELECT * FROM users
INNER JOIN usermeta ON usermeta.user_id = users.ID
GROUP BY usermeta.user_id");
然而,当打印/回显结果时," echo $ row [' meta_value'];"只返回给定ID的第一行。
如果我不对它进行分组,我最终会为每个user_id
添加多行我可以使用以下方法进行连接工作:
$result = mysql_query("SELECT user_id, GROUP_CONCAT(meta_value) AS Customer_Address
FROM usermeta
WHERE usermeta.meta_key='first_name'
or usermeta.meta_key='last_name'
or usermeta.meta_key='paupress_address_one_1'
or usermeta.meta_key='paupress_address_city_1'
or usermeta.meta_key='paupress_address_state_1'
or usermeta.meta_key='paupress_address_postal_code_1'
or usermeta.meta_key='user_type'
or usermeta.meta_key='telephone'
or usermeta.meta_key='paupress_field_business'
GROUP BY user_id");
但是,此解决方案无法让我访问第一个表。我需要一种方法来连接一个表并根据用户ID将它连接到另一个表,然后能够打印电子邮件,网址和连接的值#34; Customer_Address"
我尝试了各种组合和子查询,但似乎无法使这项工作
答案 0 :(得分:0)
您只需要合并第一个查询和第二个查询。这是一个浓缩版本:
SELECT u.user_id,
u.email,
u.url,
GROUP_CONCAT(meta_value) AS customer_address
FROM user u
JOIN usermeta um ON u.user_id = um.user_id
WHERE um.meta_key IN ('first_name','last_name')
GROUP BY u.user_id
答案 1 :(得分:0)
如果您使用的是wordpress CMS,则应查询以下wordpress标签: 获取用户的所有元数据:
$all_meta_for_user = get_user_meta( 1 );
print_r( $all_meta_for_user );
您可以通过$ all_meta_for_user数组获取first_name和last_name
或者如果您只获取first_name和last_name,则可以尝试:
echo $user_last = get_user_meta( 1, 'first_name', true );
echo $user_last = get_user_meta( 1, 'last_name', true );
要获取所有用户的元数据,您可以使用循环和更改user_id。