2012-07-21 2 views
2

У меня есть таблица, в которой я храню подписчиков, у меня есть другая таблица, в которой я храню дружбу Теперь у меня есть третья таблица, в которой хранятся данные потока.Комплексный запрос Mysql для объединения трех таблиц данных?

Ее социальная сеть, есть много причин, так что я не хочу иметь одну таблицы для последователя & дружбы (Средства facebook подписки/друзья)

Может кто-то представляет способ, как я должен запросить таблицу потоков выбирать действия обоих друзей & подписчиков?

Любая помощь будет очень признателен, спасибо

Вот простая схема базы данных, ее на самом деле не так, но почти!

Хорошо здесь базы данных таблицы схемы, пожалуйста,

Последователи стол. ROW_ID User_ID Following_User_ID

Друзья Таблица ROW_ID User_ID Friend_ID

поток Таблица ROW_ID User_ID Contents_ID Время Тип

+1

Не могли бы вы разместить структуру таблицы и, возможно, некоторые данные примера. Еще лучше, если вы можете сделать это как http://sqlfiddle.com/ –

ответ

1

Что вы ищете, вероятно, лучше всего сделать, как два различных наборы результатов ... или объединение двух.

Select "friend" as src, author, post from friends f inner join streams s on s.author = f.id 
union 
Select "follower" as src, author, post from followers f inner join streams s on s.author = f.id 

Это всего лишь несколько псевдокодов, но это должно дать вам представление о том, как действовать. Не зная схему базы данных, это лучшее, что я могу предложить.

Edit:

Это может быть то, что ищете то

select user_id, contents_id, time from (
    select user_id, contents_id, time 
    from followers f inner join stream s on s.user_id = f.user_id and f.user_id = "username" 
union 
    select user_id, contents_id, time 
    from friends f inner join stream s on s.user_id = f.user_id and f.user_id = "username" 
) order by time desc 

это будет возвращать данные в порядке времени, по убыванию.

+0

. Хорошо, вот схема таблиц базы данных, пожалуйста, Таблица последователей. ROW_ID User_ID Following_User_ID Друзья Таблица ROW_ID User_ID Friend_ID поток ROW_ID User_ID Contents_ID Время Тип – user1089705

+0

Вы можете указать, как он будет возвращать мне данные? В последовательности ? Я имею в виду первые сообщения друзей, а затем следующие сообщения пользователей? – user1089705

+0

Я не уверен, какой порядок вы хотите сделать здесь или группировать. Честно говоря, если вы собираетесь группировать результаты друг или следуя сначала, а затем другой сортировкой .. то это действительно две операции, которые вы делаете, а не одна. Я обновил свой ответ. – whiskeyfur

Смежные вопросы