在电子邮件地址中查询具有相同姓氏的用户列表?

时间:2011-04-23 作者:Holidaymaine

我有一个有很多用户的网站,其中很多人都有相同的姓氏。我想获得所有姓氏相同(即:Smith)的用户的电子邮件,这些用户的邮件中有一个与特定分类术语(即:棒球)相关的帖子。

到目前为止,我有这段代码,它可以很好地让所有用户使用相同的姓氏(感谢Mike Schinkel ). 我很难使用连接函数,但我正在学习,我真的很需要它,所以我需要帮助。

$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); 
非常感谢您的时间,我将提前支付。谢谢

1 个回复
最合适的回答,由SO网友:MikeSchinkel 整理而成

你好@Holidaymaine:

以下是您要查找的查询:

<?php

include( \'../wp-load.php\' );

$sql =<<<SQL
SELECT DISTINCT
  u.user_email AS user_email,
  um.meta_value AS user_lastname
FROM
  {$wpdb->users} AS u
  LEFT JOIN {$wpdb->usermeta} AS um ON u.ID = um.user_id
  LEFT JOIN {$wpdb->posts} AS p ON u.ID = p.post_author
  LEFT JOIN {$wpdb->term_relationships} AS tr ON p.ID = tr.object_id
  LEFT JOIN {$wpdb->term_taxonomy} AS tt ON tr.term_taxonomy_id = tt.term_taxonomy_id
  LEFT JOIN {$wpdb->terms} AS t ON tt.term_id = t.term_id
WHERE 1=1
  AND u.user_status = \'0\'
  AND um.meta_key = \'last_name\'
  AND um.meta_value = \'%s\'
  AND t.slug = \'%s\'
SQL;
  $sql = $wpdb->prepare( $sql, \'Smith\', \'baseball\' );
  $usersemails = $wpdb->get_results( $sql );
  header( \'Content-type:text/plain\' );
  print_r( $usersemails );

结束

相关推荐

MySQL查询两个数据库表:USERS和USERMETA,并按自定义元整数值排序

我试图获得一个按自定义元值(int)排序的站点用户数组。我可以很好地查询用户,并将其返回到foreach中使用。目前,我已经按照用户表中的display\\u name对查询结果进行了排序。我希望它按自定义usermeta值排序。有没有关于如何修改此查询以完成此操作的想法?function get_all_top_members() { global $wpdb; $gather_users = \"SELECT * FROM \".$wpdb->prefix.\"us