0

テーブルの友達がいるとしましょう

user_1  |  user_2  

次に、これらの友達が何をしているかを知りたいので、posts テーブルと updates テーブルをチェックします。

post_id  | post_title | post_message |  user_id | timestamp

update_id | title | userid | timestamp

私は次のようなロジックを実現したいと考えています: 友達のリストを取得し、この生成された友達のリストを調べて、最初に最新のアクティビティ (タイムスタンプ) で並べ替えて、何かを追加したかどうかを確認します。

Select user_1 from friends where user_2 = '$my_userid'
union
Select user_2 from friends where user_1 = '$my_userid'

//now loop through each of these friends and check the update/post tables to see if they have added anything recently

これをすべて 1 つの MySQL クエリで実行できますか? それとも分割して PHP を使用する必要がありますか?

4

1 に答える 1

1

post_id | post_title | post_message | user_id | タイムスタンプ-Table_A

update_id | タイトル| ユーザーID| タイムスタンプ-Table_B

以下のクエリを試してください

SELECT A.*, B.* FROM Table_A AS A JOIN Table_B AS B ON B.userid = A.user_id
WHERE A.user_id IN (100,101,102) 
ORDER BY B.timestamp DESC;

A.*-テーブルからすべての列を取得しますA.特定の列が必要な場合A.post_id

LIMIT句を追加することで、結果の数を増やすことができます。

注:100,101,102が生成されたユーザーIDであると想定しています。IN句内にユーザーIDを追加できます。

アップデート

友達を制限したい場合は、必要なユーザーIDをIN句に入れてください。where句を削除しない場合は、制限なしですべての友達の更新を取得できます。必要な列で注文できます。ORDER BY A.user_id、A.post_idを実行できます。複数の列も可能です。

于 2013-02-02T19:35:22.227 に答える