Итак, у меня есть две таблицы MySQL; один называется users
, а другой называется likes
.Объединение двух таблиц в MySQL на основе взаимных симпатий
Пользователи Таблица
id name
----- ------
1 Mark
2 John
3 Paul
4 Dave
5 Chris
Любит стол
liked_by liked match_id
----- ------ --------
1 2 1
2 1 2
1 3 3
2 3 4
1 5 5
5 1 6
Я смог успешно объединить эти две таблицы следующим образом
SELECT users.id, likes.*
FROM users
JOIN likes
ON users.id = likes.liked
Но я не уверен, как отформатировать WHERE
так, чтобы возвращались следующие строки.
name liked_by liked match_id
------ ------- -------- --------
Mark 1 3 3
John 2 3 4
Как вы можете видеть, я пытаюсь вернуть строки, где Марк и Джон оба похожи на одного и того же пользователя. В этом случае это пользователь 3, или Пол. Я попытался добавить в запрос следующее предложение, но он явно не работает.
WHERE (likes.liked_by = '1' OR likes.liked_by = '2')
Я не может понять '' liked_by столбцы ожидаемого результата? Вы можете объяснить бит. –
Извините. Это была опечатка. Я исправил его сейчас – Lance
Из предоставленного вывода, я бы предположил, что две таблицы должны быть объединены на основе loved_by, то есть ON users.id = loved_by.liked –