我需要創建一個查詢來搜索users表中的單詞,並返回在其字段(用戶名,名字,姓氏......)中包含這樣一個單詞的用戶。 但是,此查詢應該返回,但以前在所有用戶中發現,只有那些是我的朋友。 表是這樣的:如何搜索並對結果進行排序sql
USERS
- 用戶名
- 名
- 姓
- ...
朋友
- user_req
- user_acc
- 狀態(1如果user_req和user_acc是朋友,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';
感謝
關於不返回記錄,首先運行你自己的子查詢。如果它返回記錄,請加入朋友。然後添加where子句。將所有內容整理完後,將您的訂單子句移至查詢結尾。 –
你說得對。下面的查詢不會返回任何結果...它可能是引號問題? – user245679
1之後的反標是錯誤的。 $ username應該用引號括起來。 – Strawberry