温馨提示:本文翻译自stackoverflow.com,查看原文请点击:mysql - how to show the friends of a person base on this table design, is my database design correct?
mysql sql

mysql - 如何基于此表设计向一个人展示朋友,我的数据库设计正确吗?

发布于 2020-03-27 11:46:06

表人和表的朋友 -我有一个叫人和朋友的表,

  • 人有栏:ID和名称,
  • 老友记栏:ctrl_no,person_id和老友记

我想显示一个人的名字,其中person_id = 1,但是它显示的人的名字,其中person_id = 1,

人:

person id  |  name     
---------- | ----------
1          |  Jervy
2          |  Pamela Shane
3          |  Hikari

朋友:

ctrl_no    |  person_id     |  friend_id
---------- | -------------  | -----------
1          |  1             |  2
2          |  2             |  1
3          |  1             |  3
4          |  3             |  1

我在下面尝试了我的查询

SELECT person.name FROM person
JOIN friends ON person.person_id = friends.person_id
WHERE person.person_id = 1;

我的查询显示人名,其中person_id = 1而不是他朋友的名字...

我要表演。在哪里person.person_id = 1

Name
Pamela Shane
Hikari

现在让我感到困惑。TT

查看更多

查看更多

提问者
Umandap Jervy
被浏览
187
Don't Panic 2019-07-03 23:52

您的设计很好。查询只需要像这样:

SELECT person.name FROM person
JOIN friends ON person.person_id = friends.friend_id
WHERE friends.person_id = 1

您需要朋友的名字,所以您需要加入上的人员表friend_id否则,您只会反复获得同一个人的名字,我想这就是您现在所看到的。

而且标准需要检查friends.person_id而不是person.person_id因为您想要该人在该表中的所有行。