사용자 테이블에서 단어를 검색하고 해당 필드에있는 사용자 (사용자 이름, 이름, 성 ... 등)를 반환하는 쿼리를 만들어야합니다. . 그러나이 쿼리는 이전에 모든 사용자 중에서 찾아야하며 내 친구 인 사람 만 반환해야합니다. 표는 다음과 같습니다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'문자 만들기)하고 직접 실행하려고 시도했지만 작동하지 않습니다. 일부 레코드를 반환해야하는 경우 아무 것도 반환하지 않습니다. ...
$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;
";
잘못 무엇
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 절을 추가하십시오. 일단 모든 항목을 정렬하면 질의 끝에 order by 절을 옮깁니다. –
네 말이 맞아. 아래 쿼리는 결과를 반환하지 않습니다 ... 따옴표에 문제가있을 수 있습니까? – user245679
1 뒤에 잘못된 틱이 잘못되었습니다. $ username은 거꾸로 된 쉼표로 묶어야합니다. – Strawberry