作者jjjkkkooo (接科噎歐)
看板Database
標題Re: [SQL ] 類似Facebook加好友機制
時間Wed Jun 29 09:41:47 2011
※ 引述《jjjkkkooo (接科噎歐)》之銘言:
: ※ 引述《smlboby (波比)》之銘言:
: : 用自己 join 的方式作 ?!
: : T-SQL(請自行翻譯) :
: : select MTable.*
: : from friend as MTable join friend as STable
: : on MTable.friend_user_id = STable.user_id
: : and MTable.user_id = STable.friend_user_id
: : and MTable.user_id = 1
: 自問自答一下,我後來想到一個方法:
: select * from friend where friend_user_id in
: ( select user_id from friend where friend_user_id = 1)
: and user_id = 1
再來自問自答順便整理一下:
假設有一 friend Table 如下
----+--------+-------
user_id | friend_user_id | friend_name
----+--------+-------
1 | 2 | 小明
1 | 3 | 小華
1 | 4 | 小三
1 | 5 | 小二
2 | 1 | 小一
3 | 5 | NULL
3 | 2 | John
3 | 1 | Mary
若是資料表設計成朋友關係非雙向,而是多一個欄位判斷是否接受邀請
那如果要設計成user_id可以為friend取名字就有點困難,我當初會把
資料表做這種設計應該是這種考量
現在考慮 user_id = 1 的使用者,那麼它有三種好友
要得到這三種好友的狀況如下(mySQL):
a.對方送出邀請,自己尚未答覆好友
select * from friend where friend_user_id = 1 and user_id not in
(select friend_user_id from friend where user_id = 1)
b.自己送出邀請,對方尚未答覆好友
select * from friend where user_id = 1 and friend_user_id not in
(select user_id from friend where friend_user_id = 1)
c.得到/送出邀請,且已答覆的好友
select * from friend where user_id = 1 and friend_user_id in
(select user_id from friend where friend_user_id = 1)
若有問題請不吝指教 <(_ _)>
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.118.210.159
推 jkly1846:我的情況只有AC兩種 然後個人資料在另一張表 不會放一起 06/29 16:09
推 menjar:在資料量大下,條件用in會不會造成效能上有問題? 07/03 08:19