我正在使用MySQL查询从两个表中获取信息,然后按一个字段对它们进行排序。关于最后一行的东西不起作用,加载内容的AJAX函数返回错误。
$list = mysql_query("SELECT id,
user_email,
meta_lastname.meta_value lastname,
meta_firstname.meta_value firstname
FROM wp_users
LEFT JOIN wp_usermeta meta_lastname
ON meta_lastname.user_id = wp_users.id
LEFT JOIN wp_usermeta meta_firstname
ON meta_firstname.user_id = wp_users.id
WHERE meta_lastname.meta_key = 'last_name'
AND meta_firstname.meta_key = 'first_name'
WHERE user_email LIKE '%$searchpattern%'
ORDER BY lastname;");
关于最后一点的事情是不对的,并且正在返回错误。
WHERE user_email LIKE '%$searchpattern%'
ORDER BY lastname;");
关于什么出错的想法?
非凡
答案 0 :(得分:5)
您的查询中有两个WHERE
:
WHERE meta_lastname.meta_key = 'last_name'
AND meta_firstname.meta_key = 'first_name'
WHERE user_email LIKE '%$searchpattern%'
您需要使用AND
之类的逻辑运算符:
WHERE meta_lastname.meta_key = 'last_name'
AND meta_firstname.meta_key = 'first_name'
AND user_email LIKE '%$searchpattern%'
此外,您可能需要使用原始名称meta_lastname.meta_value
订购,而不是别名lastname
。
答案 1 :(得分:1)
按完整列名称排序,而不是别名。
ORDER BY meta_lastname.meta_value
答案 2 :(得分:1)
我猜这是分号。尝试ORDER BY lastname");
否则请在没有订单声明的情况下尝试。
答案 3 :(得分:1)
您还需要将第二个“WHERE”更改为“AND”。