我试图用一个查询提取用户的活动。我需要用一个查询来完成,这样我就可以使用zend-paginator了。
我有5个表:users
、replies
、threads
、wiki_articles
和wiki_article_revisions
。每个表有两个公共列created_by
和created_on
。
我尝试过使用left join
,但我认为它返回的内容不正确,并且我无法通过created_on
订购所有活动
这是我尝试过的加入:
SELECT * FROM `users` u
LEFT join `replies` r ON u.id = r.created_by
LEFT join `threads` t ON u.id = t.created_by
LEFT join `wiki_articles` wa ON u.id = wa.created_by
LEFT join `wiki_article_revisions` war ON u.id = war.created_by
WHERE (u.`name` = 'CGeorges')
我的思考过程是错误的。我应该用UNION来做这个,比如:
(SELECT id, name, created_on FROM users WHERE id = 1)
UNION
(SELECT id, name, created_on FROM threads WHERE created_by = 1)
UNION
(SELECT id, content, created_on FROM replies WHERE created_by = 1)
UNION
(SELECT id, title, created_on FROM wiki_articles WHERE created_by = 1)
ORDER by created_on DESC