【发布时间】:2017-05-08 13:05:12
【问题描述】:
我正在尝试创建一个简单的社交网络应用,其中包含有关用户及其朋友的记录。 即 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。
我不确定这样的事情是否可行,我已经使用了 3 个表,其中两个表通过复合表连接。
【问题讨论】:
-
是的,这完全有可能,而且是一件相对常见的事情。
-
所以剩下的唯一事情就是构建查询。但我不完全确定如何。
-
“查询”。我敢肯定,您最终将需要在此表上进行大量查询。但无论如何,你还没有说你想要这个查询返回什么。朋友们?用户和他们的朋友?还有什么?您是否尝试过编写这样的查询?如果您有一些基本的 SQL 知识,这将不难。
-
即我会在我的 PHP 代码中有类似 $_GET['userid'] 的东西,然后我想获取他所有朋友的数据(user_id, firstname, surname, age) where (selected user) user_id = $_GET['用户身份']。我需要他朋友的数据。
-
在我的脑海中,我想是
select * from users u inner join friends f on u.user_id = f.friend_id where f.user_id = ?- ?将包含来自$_GET["userid"]的用户标识参数