0
나는 정확히 MySQL 쿼리가 필요로하는 것을 예제로 작성했다. 두 쿼리를 결합하려고 시도했지만 그렇게하지 않았으므로 성공하지 못했다. 기본적으로 $ 세션이 이미 친구가 아닌 모든 사용자를 선택합니다.PHP의 혼란을 하나의 MySQL 쿼리로 바꾼다
내 테이블 구조가 얼마나 멀리 설명해야하는지 모르겠다. 내 쿼리를 사용하여 수행해야 할 작업을 볼 수 있지만 기본적으로 내 친구 테이블에는 각 우정에 대해 하나의 행만 있습니다. state
이 1
하고 내 표는 우정에 대해 하나 개의 행이 않기 때문에 CASE
문, 우정의 friends
ID를 얻을 필요한 경우 (우정에만 유효합니다. 당신은 반을 원하는
$getUsers = mysql_query("SELECT id FROM users WHERE id!=$session");
$getFriends = mysql_query("SELECT CASE WHEN userID=$session THEN userID2 ELSE userID END AS friendID
FROM friends
WHERE (userID=$session OR userID2=$session)
AND state='1'");
$usersArray = array();
$friendsArray = array();
while($usersC = mysql_fetch_array($getUsers))
{
$usersID = $usersC['id'];
array_push($usersArray, $usersID);
}
while($usersF = mysql_fetch_array($getFriends))
{
$friendID = $usersF['friendID'];
array_push($friendsArray, $friendID);
}
print_r(array_merge(array_diff($usersArray, $friendsArray), array_diff($friendsArray, $usersArray)));
감사합니다,이 오 그것과 같다 일하긴했지만 아무 것도 돌려주지 않을거야. (또한 사용자가 친구의 행을 가지고 있지 않은 경우에도 작동해야합니다.) –
잘하면 다음과 같이 유용합니다. http://sqlfiddle.com/#!2/3ad9a/1 –
@DylanCross : 죄송합니다. 'friends' 테이블에 상충되는'id' 컬럼이 있음을 깨닫습니다. - 한정자를 추가하면 그것을 해결해야합니다. 위의 내 대답을 업데이트했습니다. – eggyal