【发布时间】:2009-03-11 17:12:43
【问题描述】:
我想在不进行太多查询的情况下列出用户最近在我的网站上的活动。我有一张表格,其中列出了用户对日期所做的所有事情。
page_id - reference_id - reference_table - created_at - updated_at
reference_id 是我需要在 reference_table 中搜索的 ID(例如:cmets)。如果我要在我的活动表上执行SELECT,我将不得不查询:
SELECT * FROM reference_table where id = reference_id LIMIT 1
活动可以是评论、页面更新或订阅。根据它是哪一个,我需要从我的数据库中的其他表中获取不同的数据
例如如果是评论,我需要获取作者姓名,评论,如果是回复我需要获取原始评论用户名等。
我已经查看了 UNION 关键字来合并我的所有表,但我收到了错误
1222 - 使用的 SELECT 语句的列数不同
让它工作似乎相当复杂,因为列的数量必须匹配,而且我的表中没有一个表具有相同数量的表,而且我不喜欢为了好玩而创建列。
我还研究了 CASE 语句,如果我没记错的话,它还需要匹配的列数(不过我可能错了)。
有没有人知道如何在不进行太多查询的情况下列出用户最近的活动?
我正在使用 PHP 和 MySQL。
【问题讨论】:
-
我建议编辑以提供更有意义的标题。