как показать друзьям человека, основанного на этом дизайне стола, мой дизайн базы данных правильный? - PullRequest
1 голос
/ 03 июля 2019

таблица человек и друзья таблицы - у меня есть стол, который называется человек и друзья,

  • человек имеет столбец: идентификатор и имя,
  • у друзей есть столбец: ctrl_no, person_id и friend_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

Это смущает меня сейчас. T.T

Ответы [ 3 ]

0 голосов
/ 03 июля 2019

Ваш дизайн в порядке. Запрос просто должен выглядеть следующим образом:

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. Поскольку вы хотите, чтобы все строки из этой таблицы для этого человека.

0 голосов
/ 04 июля 2019

Попробуйте это:

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

0 голосов
/ 03 июля 2019

Попробуйте этот запрос, чтобы вы вернули свои таблицы назад:

SELECT person.name 
FROM friends JOIN person 
ON person.person_id = friends.person_id 
WHERE person.person_id = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...