2012-02-25 7 views
0

ソーシャルネットワーキングサイトを作っていて、さまざまなテーブルからデータを取得する最良の方法をフィードに表示することはできません。何かが格納されるたびにタイムスタンプが格納されるので、タイムスタンプで順序付けされたさまざまなテーブルからデータを取得する最善の方法と、1ページあたり20の結果に制限されています。理想的には、私はmysqlのすべての異なるテーブルを注文し、私のためにそれを制限するが、異なるテーブルがすべて必然的に関連していないと異なるデータがテーブルが何であるかに応じて返される必要があるので、私はこれはないと思う可能になるだろう。もちろん、各テーブルを個別に照会することはできますが、すべての情報を並べ替えて並べ替えることで、すべての異なるエンティティが並べられたリストにまとめられます。私が使用するサーバーサイドの言語は、codeigniterフレームワークを持つPHPです。ソーシャルネットワーキングサイトのフィードを作成する

誰でもアイデアがありますか?

+0

テーブルの構造をいくつか与えることができます。 – check123

答えて

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 

わからない正確な私の-SQL構文で、これはSQL Serverで動作すると非常に類似していなければなりません。とにかく擬似コードなので、データベース内のアプリケーションロジックをいくつか実行して、パフォーマンスを向上させることができます(つまり、PHPで大量のデータをソートする必要はありません)。

もう1つの方法は、各テーブルから最後の20を返し、クライアント側でそれらを並べ替えることです。したがって、それらをすべてUIに送り、jQueryコードにトップ20を表示させ、ユーザーにフィードのタイプを動的に選択させ、いずれかのタイプまたはタイプの組み合わせの上位20のストーリーを表示させます。

+0

2つの非常に良いアイデアがあります。私はjQueryのアプローチが特に好きです。フィードに余分なディメンションが追加されます – geoffs3310

関連する問題