2011-11-13 7 views
1

私のウェブサイトのための相互の友人のコードを作成する点で立ち往生しています。私はここにいくつかの記事を読みましたが、それは助けになりませんでした。ここ相互の友人mysqlのクエリ

は私のmysqlのクエリです:

select * 
from friend_list 
where uid='7' 
    and status=1 
    and friend_id !='3' 
union 
select * 
from friend_list 
where uid='3' 
    and status=1 
    and friend_id !='7' 

これは、すべてのログインユーザの友人と私が訪問したプロファイルの友人を表示します。 出力は、このテーブルからこの----

id uid  friend_id  status 
    36 7   4    1 
    39 7   5    1 
    40 7   8    1 
    1  3   4    1 

である私は、これは相互であるとしてのみfreind_id 4をしたいです。

答えて

1
SELECT * 
FROM friend_list AS f 
INNER JOIN friend_list AS mf ON f.friend_id = mf.friend_id 
WHERE f.uid = 7 
    AND f.status = 1 
    AND mf.uid = 3 
    AND mf.status = 1 
+0

'SELECT *'のかわりに、 'SELECT f.friend_id'がアプリケーションにデータをプルするだけでよいでしょう。 –

+0

助けてくれてありがとう。あなたの質問は私を助けました。それは魅力のように働いてくれてありがとう。私は5時間からこれに固執します。ありがとうございました –

0

私はちょうどMySQLを学び始めています。私はすでにこの問題を解決しました。

personID friendID 
6   10 
6   2 
6   3 
8   1 
8   2 
8   3 

/* query for friends */ 
select f.personID, p.personID, firstName, lastName 
from person p 
inner join friends f on f.friendID = p.personID 
where f.personID = 6; 

/* query for common friends */ 
select f1.personID 'personID 1', f2.personID 'personID 2', f1.friendID 'common friend' 
from person p 
inner join friends f1 on f1.friendID = p.personID 
inner join friends f2 on f2.friendID = p.personID 
where f1.personID = 6 and f2.personID = 8 and f1.friendID = f2.friendID; 

結果:それはあなたのコードへの直接の答えではないですが

personID 1 personID 2 common friend 
6    8    2 
6    8    3 

、あなたがソースとして地雷がかかる場合があります。

関連する問題