mysql - 两个表相互引用

标签 mysql sql

我正在尝试创建一个简单的社交网络应用程序,其中包含有关用户及其 friend 的记录。 即,ID 为 1 的用户有 ID 为 2、3 的 friend 。ID 2 的用户有 ID 为 1、3、4 等的 friend 。 现在我想获取有关该用户和他的 friend 的记录。

我创建了两个表

用户

user_id | firstname | surname | age 

friend

user_id | friend_id

并记录如下内容:

用户

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

friend

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 个表,其中两个表通过一个复合表连接。

最佳答案

正如您所描述的那样(一个表有两个外键指向另一个表中的列),建议的关系是完全可能的,并且是需要做的相对常见的事情。

在查询用户的好友方面,根据您在评论中所说的内容,我认为是:

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

? 将包含来自 $_GET["userid"]

的 userid 参数

关于mysql - 两个表相互引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43848439/

相关文章:

c# - 使用 C# 使用加载数据本地 infile 时出错

sql - 如何显示employees表中包含 'a'或 'o'或 'e'字母的last_name?

sql - Postgresql:更新问题

python - 我可以从纯 sql CREATE 创建 SQLALCHEMY 模型吗?

mysql - 如何使用sql计算一小时(日期时间)内的记录数

java - jdbc/mysql ---> java.sql.SQLException : Access denied for user 'root' @'localhost'

mysql - 为每个组选择具有最高值的整个记录

mysql - 将 sql 原始查询转换为 Eloquent 关系

mysql - 查询中的列总和

sql - Postgres : Rewrite boolean datatype to numeric