我需要创建一个查询,该查询在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;
     ";


...?

10-07 15:28