2010-04-21 73 views
3

嗨我有一個簡單的數據庫來存儲友誼,只有兩列person_a,person_b,表示person_a和person_b是朋友。從這樣的大列表中,我應該運行什麼查詢來獲得'sam'的所有朋友。謝謝。MySQL如何從友誼表中選擇朋友?

+0

如何存儲的友誼?如果'sam'和'baz'是朋友,那麼'sam'person_a或person_b? – 2010-04-21 04:43:44

+0

也許真正的問題是,友誼是否反射?有人能成爲我的朋友,但我不是他們的朋友嗎? – 2010-04-21 04:53:04

+1

也許你應該使用兩個記錄的友誼,看到這裏:http://stackoverflow.com/questions/2910134/friendship-database-schema。順便說一句,@戴維史密斯:不存在反身友誼。那不是朋友,那是粉絲! – 2010-05-28 14:20:30

回答

3

使用UNION:

SELECT person_b 
FROM friendship 
WHERE person_a = 'sam' 
UNION 
SELECT person_a 
FROM friendship 
WHERE person_b = 'sam' 
0

你可能想嘗試像

SELECT * 
FROM users u INNER JOIN 
     (
      SELECT CASE 
         WHEN person_a = yourid THEN 
          person_b 
         ELSE person_a 
        END person_id 
      FROM FRIENDSHIPS 
      WHERE person_a = yourid 
      OR  person_b = yourid 
     ) myFriends ON u.userID = myFriends.person_id 
1

可能嘗試這樣,

SELECT person_a, person_b 
FROM friendship 
WHERE person_a = 'sam' or person_b = 'sam' 

Use the query like this, after that 

if(person_a=='sam') { 
    $frnd = $rowfetch["person_b"]; 
} else if(person_b=='sam') { 
    $frnd = $rowfetch["person_a"]; 
}