MySQL запрос, чтобы получить идентификаторы постов, такие как твиттер homefeed, который покажет наши сообщения, а также наши последующие сообщения - PullRequest
2 голосов
/ 12 июля 2011

У меня есть 2 таблицы с именами сообщений и следует

структура таблицы сообщений:

id |UID |текст |time

следующая таблица имеет идентификатор пользователя и идентификатор пользователя последователей. Структура следующей таблицы:

uid |followid

Теперь мне нужно написать запрос, чтобы получить идентификаторы постов, такие как твиттер homefeed, в котором будут показаны наши посты, а также следующие посты.

SELECT posts.id FROM posts 
INNER JOIN follows ON posts.uid = follows.followingid 
AND follows.uid = "'.$currentuser.'" OR posts.uid = "'.$currentuser.'"

, но этоне работает, если в следующей таблице нет записей.

Ответы [ 2 ]

4 голосов
/ 12 июля 2011

Вы в основном хотите получить все сообщения текущего пользователя и все сообщения пользователя, за которым следует текущий пользователь. Итак, вот код, я использую союз. Сначала я выбираю все сообщения текущего пользователя, затем я выбираю сообщения пользователя, за которым следует текущий пользователь.

select posts.id
from posts
where posts.uid = "'.$currentuser.'"

union all

select posts.id
from posts
inner join follows
on follows.followingid = posts.uid
where follows.uid = "'.$currentuser.'"
1 голос
/ 12 июля 2011

Попробуйте изменить это с помощью LEFT JOIN, например:

SELECT posts.id FROM posts 
   LEFT JOIN follows ON posts.uid = follows.followingid 
      AND follows.uid = "'.$currentuser.'" 
WHERE posts.uid = "'.$currentuser.'"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...