2017-05-08 34 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