Intereting Posts
Форматирование даты / времени, возвращаемого из пользовательского запроса $ wpdb Внесите обновление статуса сообщения в виде анонса Уведомление администратора не отображается Мой WordPress дает мне ошибку 403 при сохранении сообщения / проекта с конкретными словами Как WordPress выбирает шаблон типа архива? Новый виджет не отображается Почему идентификатор сообщения равен 0 в hook в wp_insert_post_data? проверка профиля профиля обновляет все поле, если отсутствует wordpress Рекомендуемое изображение не отображается в индексе блога Как отображать имя продукта в алфавитном порядке в пользовательском поле (таксономия)? Обновление корзины покупок и итоговые данные Woocommerce Не могу добавить пункты меню с моей темой Получите wp-load.php PATH с wp_localize_script и JavaScript для плагина Использование темы chunk из wordpress.com на моем собственном хосте Уведомить автора комментария после ответа

LEFT JOIN, INNER OUTER JOIN, LEFT OUTER JOIN сводит меня с ума. Пожалуйста помоги?

дружелюбные кодеры! У меня есть трудное время в столах.

У меня много пользователей на моем сайте, и многие из них имеют те же фамилии. Я пытаюсь получить их электронные письма по их фамилии. WP хранит электронные письма в таблице пользователей и имена пользователей в usermeta, и я пытаюсь использовать JOIN, чтобы получить то, что хочу, но я не понимаю, как это работает, и я собираюсь отказаться от дня. Это то, что у меня есть после 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); в <?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

Префиксы имеют значение.