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 
Другие вопросы по тегам