У меня есть таблица с такой структурой:
все целые числа. Эта таблица имитирует дружбу между двумя пользователями.
Все, что я хочу сделать, это найти такие записи, которые существуют только в одном направлении.
Например: Я хочу найти количество записей, которые имеют t1.u_id = 15, когда нет записей, которые имеют t2.s_id = 15 и t2.u_id = t1.s_id.
Таким образом, связь между двумя идентификаторами существует только один раз.
Мне показалось, что мне удалось написать правильный запрос с подзапросами, но затем я начал переписывать запрос, используя левое соединение, чтобы увеличить скорость, и теперь... ну, он не работает.
Мой запрос прямо сейчас:
SELECT * FROM `friends` AS f1 LEFT JOIN `friends` AS f2
ON f1.user_id = f2.friend_id
WHERE f1.friend_id=15 AND f2.user_id IS NULL
но он не работает. Пожалуйста, помогите.
NB. Я использую mysql 5, поэтому я не могу использовать инструкцию EXCEPT и все другие хорошие вещи.
Как насчет этого?
SELECT *
FROM `friends` AS f1
LEFT JOIN `friends` AS f2 ON f1.user_id = f2.friend_id AND f1.friend_id = f2.user_id
WHERE f1.friend_id=15
AND f2.user_id IS NULL
И этот?
SELECT * FROM friends
f1
LEFT JOIN friends
f2 ON f1.user_id = f2.friend_id
WHERE f1.friend_id = 15 И f2.user_id IS NULL