1
votes

comment montrer aux amis d'une personne basée sur cette conception de table, la conception de ma base de données est-elle correcte?

personne de table et amis de table - J'ai une table appelée personne et amis,

  • la personne a une colonne: identifiant et nom
  • friends a la colonne: ctrl_no, person_id et friend_id

Je veux afficher le nom d'un ami où person_id = 1, mais il montre le nom de la personne WHERE person_id = 1,

personne:

Name
Pamela Shane
Hikari

amis:

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

J'ai essayé ma requête ci-dessous

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

ma requête montre le nom de la personne où person_id = 1 pas le nom de son ami ...

Je veux montrer. . . WHERE person.person_id = 1

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

Cela me déroute maintenant. T.T


0 commentaires

3 Réponses :


0
votes

Essayez cette requête pour avoir vos tables à l'envers:

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


0 commentaires

1
votes

Votre design est parfait. La requête doit simplement être comme ceci à la place:

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

Vous voulez les noms des amis, vous devez donc rejoindre la table des personnes sur friend_id . Sinon, vous obtenez simplement le nom de la même personne à plusieurs reprises, ce que je suppose que c'est ce que vous voyez maintenant.

Et les critères doivent vérifier friends.person_id plutôt que person.person_id . Puisque vous voulez toutes les lignes de cette table pour cette personne.


0 commentaires

0
votes

Essayez ceci:

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


0 commentaires