Создание канала для сайта социальной сети - PullRequest
0 голосов
/ 25 февраля 2012

Я делаю сайт социальной сети и не могу решить, какой лучший способ получить данные из разных таблиц - это показать их в ленте.Каждый раз, когда что-то сохраняется, у него хранится временная метка, поэтому я задавался вопросом, как лучше всего получать данные из различных таблиц, упорядоченных по временной метке и ограниченных 20 результатами на страницу.В идеале я хотел бы, чтобы mysql запрашивал все разные таблицы, упорядочивал и ограничивал их для меня, но поскольку разные таблицы не все связаны друг с другом, и необходимо возвращать разные данные в зависимости от того, для чего таблица, я не думаю, что этобудет возможно.Конечно, я могу запрашивать каждую таблицу по отдельности, но тогда как мне отсортировать и упорядочить всю информацию по страницам, чтобы все разные объекты были в одном упорядоченном списке вместе.Я использую серверный язык - PHP с каркасом codeigniter.

У кого-нибудь есть идеи?

1 Ответ

1 голос
/ 25 февраля 2012

Можете ли вы установить общий формат для того, что возвращается из всех отдельных таблиц? Так, например, вы бы написали запрос, который вернул 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 из каждой таблицы и позволить клиентской стороне перебирать их. Поэтому отправьте их все в пользовательский интерфейс и позвольте коду jQuery отобразить 20 лучших, а затем дайте пользователям возможность динамически выбирать тип фида, и они увидят 20 лучших статей любого типа или любой комбинации типов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...