MYSQL выбирает общих друзей
Моя таблица "друзей" имеет следующие столбцы: id, userID, userID2, state
userID и userID2 не имеют определенного порядка помещения в базу данных.
В настоящее время я использую этот запрос, чтобы найти друзей:
$quer = mysql_query("
SELECT CASE WHEN userID=$id THEN userID2 ELSE userID END AS friendID
FROM friends WHERE userID=$id OR userID2=$id");
Я пробовал это, однако это не работает:
SELECT
CASE WHEN userID=$id OR userID=$session THEN userID2
ELSE userID END AS friendID
FROM friends WHERE (userID=$session OR userID2=$session)
AND (userID=$id OR userID2=$id) AND friendID!=$session
также он не должен возвращать строку, если friendID=$session (который я добавил ко второму запросу)
РЕДАКТИРОВАТЬ: Я хочу вернуть в качестве строк FriendID, которые имеют общие $id и $ session. Я не совсем уверен, почему это не работает.
1 ответ
Решение
После объяснений (и собственно чтения "взаимной" части):
SELECT a.friendID
FROM
( SELECT CASE WHEN userID = $id
THEN userID2
ELSE userID
END AS friendID
FROM friends
WHERE userID = $id OR userID2 = $id
) a
JOIN
( SELECT CASE WHEN userID = $session
THEN userID2
ELSE userID
END AS friendID
FROM friends
WHERE userID = $session OR userID2 = $session
) b
ON b.friendID = a.friendID