Как сделать это простое утверждение MySQL, не прибегая к подзапросу? - PullRequest
0 голосов
/ 25 января 2012

Таблица пользователей:

user_id | avatar
----------------------------------
1       | file-name.jpg
2       | friendly-ghost.jpg

Таблица просмотров профиля:

profile_user_id | viewer_user_id
--------------------------------
2               | 1

Мне нужно получить всю информацию о пользователе, которого просмотрел пользователь 1.

query:

SELECT *
FROM `profile_views`
INNER JOIN `users` ON profile_views.viewer_user_id = users.user_id
WHERE profile_views.viewer_user_id = '1'

Это возвращает:

profile_user_id: 2
avatar: file-name.jpg

Как вы можете видеть, он возвращает аватар пользователя 1, а не пользователя 2.Мне нужно, чтобы вернуть аватар пользователя, который просматривал пользователь 1.В этом случае это будет «friendly-ghost.jpg».

Есть ли способ сделать это, не прибегая к подзапросу?

Ответы [ 3 ]

0 голосов
/ 25 января 2012
SELECT * FROM users
JOIN profile_views ON (profile_user_id = user_id AND viewer_user_id = 1)
0 голосов
/ 25 января 2012

Просто измените ваше условие соединения.

ON profile_views.profile_user_id = users.user_id

0 голосов
/ 25 января 2012
SELECT user_id, avatar
FROM profile_views AS PV
     INNER JOIN users AS U ON U.user_id = PV.profile_user_id
WHERE PV.viewer_user_id = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...