2017-05-08 40 views
0

我試圖用關於用戶和他們的朋友的記錄創建一個簡單的社交網絡應用程序。 即ID爲1的用戶擁有ID爲2,3的朋友。ID爲2的用戶擁有ID爲1,3,4等的朋友。 現在我想獲取關於該用戶及其朋友的記錄。互相引用的兩張表

我已經創建了兩個表

用戶

user_id | firstname | surname | age 

朋友

user_id | friend_id 

和記錄是這樣的:

用戶

user_id | firstname | surname | age 
1  | Nikola | Misic | 22 
2  | Stefan | Ilic | 23 
3  | Dragan | Jovic | null 

朋友

user_id | friend_id 
    1 | 2 
    1 | 3 
    2 | 1 
    3 | 1 
    3 | 4 

USER_ID和friend_id外鍵都在用戶表中的user_id指點。

關係是這樣的: enter image description here

我不知道是這樣的,即使有可能,我有3個表,通過複合表連接的兩個表的工作。

+0

userid參數是的,它是完全可能的,一種比較常見的需要做的事情。 – ADyson

+0

所以我唯一留給我的是構造查詢。但我不完全確定如何。 「查詢」爲 – mishke

+0

。我相信你最終會在這張桌子上需要大量的查詢。但無論如何,你還沒有說過你想要這個查詢返回。朋友們?用戶_和_他們的朋友?還有別的嗎?你有沒有試過寫這樣的查詢?如果你有一些基本的SQL知識,這並不難。 – ADyson

回答

1

建議的關係,正如你所描述的(一個表中有兩個外鍵與另一個表中的列)是完全可能的,也是一個相對常見的事情。

在查詢的基礎上你在評論中說,用戶的朋友的方面,我認爲這是:

select 
    u.* 
from 
    users u 
    inner join friends f 
    on u.user_id = f.friend_id 
where 
    f.user_id = ? 

?將包含從$_GET["userid"]

+0

現在我感到慚愧。我已經學會了如何連接表格,但是我從來沒有見過只有兩個表格,其中之一是複合表格。我一直在 只與3表。謝謝,我認爲這應該起作用,但我會在今天進行測試。 – mishke

+0

它幫助,謝謝:) – mishke

+0

你有什麼想法我怎麼能得到朋友的朋友,那些離選定的用戶兩步遠,但沒有直接連接到選定的用戶? – mishke