personne de table et amis de table - J'ai une table appelée personne et amis,
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
3 Réponses :
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
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.
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
)