2012-02-25 83 views
0

我正在制作一个社交网站,并且无法确定从各种表中获取数据的最佳方式是如何在Feed中显示。每次存储东西时,都会存储一个时间戳,所以我想知道从各种不同的表中按时间戳排序检索数据的最佳方法,并且每页只限于20个结果。理想情况下,我希望MySQL查询所有不同的表格并排序并限制它,但是因为不同的表格并不都是相关的,并且需要根据表格的不同来返回不同的数据,所以我不认为这是将成为可能。我可以单独查询每个表格,但是如何将所有信息排序并排序为页面,以便所有不同的实体都在一个有序列表中。我使用的服务器端语言是PHP和codeigniter框架。为社交网站创建源

任何人有任何想法?

+0

可以给你的表的一些结构。 – check123 2012-02-25 13:28:50

回答

1

你能为所有单独的表格返回的内容建立一个通用格式吗?因此,例如,你会写一个查询,回来FEEDTITLE,FeedSummary和时间戳:

select top 20 * 
    from (

select a.Title as FeedTitle, 
     a.A + a.B + a.C as FeedSummary, 
     a.Timestamp as TimeStamp 
    from a 

union all 

select b.Name + ' married ' + b.Spouse as FeedTitle, 
     b.AtPlace as FeedSummary, 
     b.TimeStamp as TimeStamp 
    from b 

) as allFeeds 
    order by TimeStamp desc 

不知道确切的MY-SQL语法,这将在SQL Server的工作,应该是非常相似的。无论如何,它只是伪代码,这个想法是,你会在数据库中执行一些应用程序逻辑,以期望获得性能提升(所以你不必通过PHP中的大量数据进行排序)。

另一种方法是从每个表中返回最后20个,让客户端对它们进行排序。因此,请将它们全部发送到用户界面,并让jQuery代码显示前20位,然后让用户动态选择Feed的类型,他们会看到前20个故事中的任何一种类型或任意类型的组合。

+0

这里有两个非常好的主意,非常感谢我特别喜欢jQuery方法,这会为feed添加额外的维度 – geoffs3310 2012-02-25 13:39:47