【问题标题】:Creating a feed for a social networking site为社交网站创建提要
【发布时间】:2012-02-25 13:26:27
【问题描述】:

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

有人有什么想法吗?

【问题讨论】:

  • 可以给出表格的一些结构。

标签: php mysql sql codeigniter social-networking


【解决方案1】:

您能否为从所有单独的表中返回的内容建立一个通用格式?例如,您将编写一个返回 FeedTitle、FeedSummary 和 Timestamp 的查询:

 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 个,然后让客户端对它们进行排序。所以将它们全部发送到 UI 并让 jQuery 代码显示前 20 个,然后让用户动态选择提要的类型,他们会看到任何一种类型或任何类型组合的前 20 个故事。

【讨论】:

  • 这里有两个非常好的想法,非常感谢我特别喜欢 jQuery 方法,它可以为提要增加额外的维度
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-24
  • 1970-01-01
  • 2011-11-19
  • 2010-11-02
  • 2011-02-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多