2012-01-08 5 views
1

私はニュースフィードを作成しようとしています。MySQLマルチプルIDを探しています

との私はfriend_1friend_2friends上とuidとテーブルstatus

そして例えば、私のユーザーID corrolatesと呼ばれる状況のためにこれを持っているとしましょう: はのは、私はテーブルfriendsと呼ばれるいくつかのデータで、このMySQLのテーブルがあるとしましょうstatusの場合。 statusのデータ行を持つfriendsからどの友達を見ることができるようにするためにMySQLのクエリを使用する必要がありますか?

+0

疑似yは必要ありません。SELECT * status.uid – mhps

+0

内のID私はある友達から、あなたのモデルで少し混乱しています。ユーザーIDがどこに収まるかは、どのテーブルにも表示されません。それは「友達」のIDですか? – xQbert

答えて

2
SELECT status.* 
FROM status, friends 
WHERE (friend_2 = uid AND friend_1 = <your_id>) 
OR (friend_1 = uid AND friend_2 = <your_id>); 

(と)2行を挿入 - あなたはOR (...)

1

これは、現在のユーザーの友達のすべてのステータスを選択します。

SELECT s.* 
FROM status s 
INNER JOIN friends f ON f.friend_2 = s.uid 
WHERE f.friend_1 = your_current_user; 

また、友情リンク双方向を扱わないことをお勧めします。別のリンクを作成します。たとえば、ユーザー1と5が友達である場合、2つのレコードがあります。

| friend_1 | friend_2 | 
| 1  | 5  | 
| 5  | 1  | 

これは記憶領域を増やしますが、クエリを簡略化します。また、それはあなたがそれを必要とする場合、一方的な友情を可能にします。 :-)

eevery友情の場合