2012-01-08 38 views
1

我正在嘗試製作新聞Feed,但我被卡住了。 比方說,我有一些數據稱爲表friends這個MySQL表:MySQL正在尋找多個ID

,讓我們說,我對friendsuid有這樣的狀態稱爲表status

再舉例來說,我的用戶ID corrolates與friend_1friend_2status。我需要使用什麼MySQL查詢來查看friends哪些朋友擁有status中的行數據?

+0

僞Y:SELECT * FROM朋友WHERE ID IN status.uid – mhps 2012-01-08 21:34:14

+0

我有點困惑你的模型。用戶ID在哪裏適合我沒有在任何表格上看到它。這是「朋友?」上的ID嗎? – xQbert 2012-01-08 21:35:09

回答

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

如果在eevery友誼插入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是朋友,則會有兩條記錄。

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

這增加了存儲空間,但簡化了查詢。如果你需要的話,它也能促成單方面的友誼。 :-)