php - 对多行进行连接查询以进行搜索

标签 php mysql wordpress join

目前我正在开发一个 Wordpress 网站,我希望能够在我的网站的一部分上根据用户的名字和姓氏搜索用户。

Wordpress 使用元表来存储用户的任何“额外”数据。名字和姓氏是其中一些元字段。

现在我正在尝试创建一个查询,它得到一个结果,该结果返回一个与名字和姓氏匹配的用户,唯一的问题是有一个元行用于姓氏,另一个元行用于名字,它们两者都引用相同的 user_id。只是我不知道如何正确创建查询。

当我有这个查询时

SELECT U.id FROM wp_users AS U, wp_usermeta as US
WHERE U.id=US.user_id
AND (US.meta_key='first_name' AND US.meta_value='MyFirstName')

它确实返回了我正在寻找的用户,但是当我尝试这样做时

SELECT U.id FROM wp_users AS U, wp_usermeta as US
WHERE U.id=US.user_id
AND (US.meta_key='first_name' AND US.meta_value='MyFirstName')
AND (US.meta_key='last_name' AND US.meta_value='Dijkstra')

我根本没有得到任何结果,有人可以帮助我吗?

如果有人对数据库结构感兴趣,这里( http://cl.ly/6rGx )是 users 表,这里( http://cl.ly/6rts )是 users_meta 表。

提前致谢

最佳答案

您无法同时将一行连接到另一个表的另外两行,因此您需要连接另一个表两次,一次用于名字,一次用于姓氏。像这样:

SELECT U.id 
FROM wp_users AS U
inner join wp_usermeta as UMF on U.id = UMF.user_id 
inner join wp_usermeta as UML on U.id = UML.user_id 
WHERE UMF.meta_key = 'first_name' 
    AND UMF.meta_value = 'MyFirstName'
    AND UML.meta_key = 'last_name' 
    AND UML.meta_value = 'Dijkstra'

关于php - 对多行进行连接查询以进行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6050224/

相关文章:

MySQL:相交匹配一定数量特征的行

wordpress - 如何将 SSL 到 WordPress 网站添加到 Digital-ocean Apache Ubuntu 18.04

php - 从表单中获取用户名、密码和电子邮件,并用它创建数据库行

php - 如何使用 Jquery 处理 PHP 生成的内容?

php - 如何在不浪费内存的情况下在 PHP 中构建大型 MySQL INSERT 查询

mysql - MySQL UNION LIMIT 的性能

php - mysqli_insert_id 的问题

php - 当结果返回仅为 1 个值时,如何将从 SELECT 语句检索到的值设置为变量

php - 将 php/html 文件添加到 Wordpress 主题

javascript - css 链接到 .html 文件