我需要创建一个查询,该查询在users表中搜索一个单词,并返回在其字段(用户名,名字,姓氏,...)中具有该单词的用户。
但是,该查询应该返回以前在所有用户中找到的,只有那些是我的朋友。
表格如下:
用户
用户名
名称
姓
...
朋友
user_req
user_acc
状态(如果user_req和user_acc是朋友,则为1;如果有待处理的请求,则为0)
我做了这个查询,但是不起作用:
$sql = "SELECT u.*"
. "FROM (SELECT * "
. "FROM `users` "
. "WHERE (`username` LIKE '%".$value."%' OR "
. "`email` LIKE '%".$value."%' OR "
. "`first_name` LIKE '%".$value."%' OR "
. "`last_name` LIKE '%".$value."%'"
. ") ORDER BY ".$order.") u"
. "INNER JOIN `friend` ON (`u.username` = `friend.user_acc`)"
. "WHERE `friend.user_acc` = ".$username." AND `friend.status = 1`";
我试图清除查询(尝试使字符为“ f”)并直接运行它,但是它不起作用。什么都不返回,它应该返回一些记录。
SELECT u.*
FROM (
SELECT *
FROM `users`
WHERE (
`username` LIKE '%f%' OR
`email` LIKE '%f%' OR
`first_name` LIKE '%f%' OR
`last_name` LIKE '%f%' OR
`city` LIKE '%f%' OR
`gender` LIKE '%f%'
) ORDER BY `username`) u
INNER JOIN `friend` ON (u.`username` = friend.`user_acc`)
WHERE friend.`user_acc` = 'LP' AND friend.`status` = '1';
谢谢
最佳答案
怎么了
$sql = "
SELECT u.*
FROM users u
JOIN friend f
ON f.user_acc = u.username
WHERE ( username LIKE '%$value%' OR
email LIKE '%$value%' OR
first_name LIKE '%$value%' OR
last_name LIKE '%$value%'
)
AND f.user_acc = '$username'
AND f.status = 1
ORDER
BY $order;
";
...?