左连接,内部外连接,左外连接使我发疯。请帮忙?
题
编码人员!我很难加入(ING)表。
我的网站上有很多用户,其中许多用户具有相同的姓氏。我试图以他们的姓氏获取他们的电子邮件。 WP将电子邮件存储在用户表和用户名中的Usermeta中,我一直在尝试使用加入以获取我想要的东西,但是我不明白它的工作原理,我将放弃一天。这是我4.5小时后拥有的。
$usersemails = $wpdb->get_results("SELECT users.user_email, usermeta.meta_value
FROM $wpdb->users
LEFT JOIN $wpdb->usermeta ON $wpdb->users.ID = $wpdb->usermeta.user_id
WHERE user_status = '0'
AND meta_value = 'Smith'");
对任何帮助表示赞赏,所以您可以帮助吗?谢谢。
解决方案
你好 @holidaymaine:
不确定您在哪里做错了,而是尝试以下内容,而不是自我包含 test.php
文件您可以放入网站的根部并加载浏览器 http://yoursite.com/test.php
(假设您更换 yoursite.com
带有您网站的域!另外,请注意我如何添加 WHERE {$wpdb->usermeta}.meta_key = 'last_name'
为了确保您没有获得您没想到的记录):
<?php
/*
Filename: test.php
*/
include('wp-load.php');
$sql =<<<SQL
SELECT
{$wpdb->users}.user_email,
{$wpdb->usermeta}.meta_value
FROM
{$wpdb->users}
LEFT JOIN {$wpdb->usermeta} ON {$wpdb->users}.ID = {$wpdb->usermeta}.user_id
WHERE 1=1
AND {$wpdb->users}.user_status = '0'
AND {$wpdb->usermeta}.meta_key = 'last_name'
AND {$wpdb->usermeta}.meta_value = 'Smith'
SQL;
$usersemails = $wpdb->get_results($sql);
header('Content-type:text/plain');
print_r($usersemails);
其他提示
您可以通过API执行此操作,用户搜索在3.1中得到了改进
$search = new WP_User_Query(array(
'meta_value' => 'Lastname',
'fields' => array('user_email'),
));
var_dump($search->get_results());
SELECT users.user_email, usermeta.meta_value
应该:
SELECT $wpdb->users.user_email, $wpdb->usermeta.meta_value
前缀很重要。