Hola que tal? Espero sigas leyendo, hace un tiempo tuve una aplicación parecida a la que dices y creo que tengo un código hecho, pero recuerdo haber usado algo distinto a un join ya que al igual que tu tabla, eran tres filas id_user, id_friend, frieandship_status.
Y mi consulta era la siguiente:
Sé que es muy simple pero, así como simple muy efectiva para lo que necesitaba ya que, si el usuario solicita la amistad el estaara en la columna id_user y si el es el que la acepta, estara en la columna id_friend siempre será así y cualquier otra cosa que necesites validar, la haces con esa misma consulta o con php. Como por ejemplo si el usuario visita el perfil otro digamos usuario 1 visita el perfil del 2 y quieres verificar si son amigos puedes hacer estas consulta:
Código MySQL:
Ver original#Primero si el 1 hizo la solicitud
AND friendship_status
= 1
#Luego si el 2 hizo la solicitud
AND friendship_status
= 1
# Verificar si la solicitud esta pendiente simplemente sustituye el 1 por 0 o el número que le asignes a pendiente, por ejemplo
AND friendship_status
= 0
Espero te haya servido de mucha ayuda. debo destacar que el campo friendship_status para mi era un TINYINT.
Saludos!