2014-10-09 55 views
0

我有兩個mysql表成員和addclique。成員表包含所有用戶的詳細信息,而addclique表是包含兩列的'friends'表 - adder_id,其中包含發送好友請求的用戶的id和clique_id,其中包含接受好友請求的用戶的ID。如何顯示兩個MySQL表中的用戶

請嘗試選擇特定用戶的朋友,但我很難從成員表中獲取朋友的詳細信息(照片,姓名等),因爲我不知道在哪一點加入成員表到addclique表。

$sql = "SELECT i.*, m.* FROM addclique i JOIN members m ON m.id = ******** WHERE adder_id = :id OR clique_id = :id"; 

$result= $db->query($sql, array('id' => $_SESSION['id']); 
+2

你想告訴我你的addclique表中的哪個字段加入你的m.id嗎? – JNevill 2014-10-09 02:22:26

+0

請確定您的主鍵和外鍵。 – 2014-10-09 02:29:36

回答

1

如果我正確理解你的問題,你需要加入m.id = a.adder_id or m.id = a.clique_id。你可以用in做到這一點:

set @id := 4; 

select * 
from members m 
    join addclique a on m.id in (a.adder_id, a.clique_id) 
where @id in (a.adder_id, a.clique_id) 
    and m.id != @id 
+0

爲什麼我們要設置@id:= 4? – uchejava 2014-10-09 09:12:20

+0

@uchejava - 這只是小提琴工作的一個例子。您可以刪除該行並將其更改爲':id'。 – sgeddes 2014-10-09 12:56:13

2

查詢下面將選擇一個特定的人增加了所有成員加上已經添加了同一個人的所有成員。

select m.* from members m 
join addclique a on m.id = a.adder_id 
where a.clique_id = :id 

union 

select m.* from members m 
join addclique a on m.id = a.clique_id 
where a.adder_id = :id 
+0

如何將這些語句與$ sql關聯起來,因爲您有2個select語句?我是說:$ sql =「select ***** union select ****」;? – uchejava 2014-10-09 09:21:24

+0

是的,它是一個單一的查詢 – FuzzyTree 2014-10-09 11:38:25

相關問題