2012-06-14 3 views
-2

У меня есть 3 стола.с использованием соединений или соединений для различной фильтрации

  • tb_post: идентификатор, пользователь, текст и
  • tb_follow: идентификатор, пользователь, followed_user и
  • tb_share: идентификатор, fk_post_id, пользователь (который разделил пост)

так user01 хотят получить все сообщения для пользователей, за которыми следует user01 + все сообщения, которыми пользуются пользователи , которые отключены пользователем01

отредактировано: как я могу это получить? Я попробовал этот запрос:

select * from post 
left join follow on post_user = follow_user 
left join share on follow_user = share_user 

Но у меня была только первая часть.

+0

@Tony Гопкинсона я использовал влево присоединяется (выберите * от должности слева присоединиться следовать по post_user = follow_user оставили присоединиться долю на follow_user = share_user), но я получаю только первую часть – Roobah

+0

@user почему? вопрос ясен. я ставлю свои столы и то, что хочу! – Roobah

+1

@usr, что вы думаете о помощнике? – jcolebrand

ответ

1

Я не верю, что вы можете сделать это, не используя союз. Производительность разумна, в основном вы выполняете два запроса. Обязательно укажите соответствующие поля, и вы должны быть в порядке.

SELECT tb_post.id, tb_post.text 
FROM tb_post INNER JOIN tb_follow ON tb_post.user = tb_follow.followed_user 
WHERE (((tb_follow.user)=100)) 
ORDER BY tb_post.id 
UNION SELECT tb_post.id, tb_post.text 
FROM (tb_share INNER JOIN tb_follow ON tb_share.user = tb_follow.followed_user) INNER JOIN tb_post ON tb_share.fk_post_id = tb_post.id 
WHERE (((tb_follow.user)=100)) 
ORDER BY tb_post.id; 
+0

это сработало. мой вопрос заключался в том, как это получить, и возможно ли это без использования союза. вы ответили всем этим на предмет производительности. спасибо Нику. Конструктивный ответ: D – Roobah

+0

Этот синтаксис не работает - у вас может быть только один ORDER BY в 'UNION'. Кроме того, что ((цель ((все (из()) круглых скобок))))? –

+0

да. Вы правы. Я использовал только один заказ. Скобки для разъяснения я считаю – Roobah

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