Я пытаюсь узнать о соединениях MYSQL, но у меня возникают проблемы с этим. Я хочу получить все строки в таблице 1, где идентификатор пользователя находится во взаимосвязи с данным пользователем.
table2 содержит отношения пользователей, поэтому идентификатор пользователя может быть либо в поле iduser1, либо в поле iduser2. У меня есть следующий запрос, который дает мне правильные результаты:
set @userID = 91;
SELECT * FROM table1
WHERE (iduser IN (SELECT iduser1 FROM table2 WHERE iduser2 = @userID)
OR (iduser IN (SELECT iduser2 FROM table2 WHERE iduser1 = @userID)))
table1:
iduser FK
table2:
iduser1 FK
iduser2 FK
Мне сказали, что вложенные запросы в MySQL имеют плохую репутацию, когда дело доходит до производительности, и я уверен, что мог бы, вероятно, каким-то образом выполнить этот же запрос с помощью JOINS, но я просто не могу понять это, тем более что есть оператор OR, потому что table1. iduser может быть либо в table2.iduser1, либо в table2.iduser2
Как я могу присоединиться к одному и тому же столу дважды?