381 votes

Requête SQL Inner-join avec 3 tables?

Je tente de joindre 3 tables dans une vue; voici la situation:

J'ai une table qui contient des informations sur les étudiants qui postulent pour vivre sur ce campus universitaire. J'ai une autre table qui répertorie les préférences de résidence (3 d'entre elles) pour chaque étudiant. Mais chacune de ces préférences n'est qu'un numéro d'identification, et le numéro d'identification correspond à un nom de résidence dans une troisième table (je n'ai pas conçu cette base de données...).

En gros, j'ai fait un INNER JOIN sur la table avec leurs préférences et leurs informations, le résultat est quelque chose comme...

 John Doe | 923423 | Étudiant entrant | 005

005 serait l'ID de la résidence. Maintenant, je veux faire correspondre cet ID de résidence à une troisième table, où cette table contient un ID de résidence et un nom de résidence.

En gros, je veux que mon résultat soit comme...

 John Doe | 923423 | Étudiant entrant | Résidence Foley <---(AU LIEU DE 005)

Voici ce que j'ai actuellement:

SELECT
  s.StudentID, s.FName, 
  s.LName, s.Gender, s.BirthDate, s.Email, 
  r.HallPref1, r.HallPref2, r.HallPref3
FROM
  dbo.StudentSignUp AS s 
  INNER JOIN RoomSignUp.dbo.Incoming_Applications_Current AS r 
    ON s.StudentID = r.StudentID 
  INNER JOIN HallData.dbo.Halls AS h 
    ON r.HallPref1 = h.HallID

3voto

ashu Points 21
SELECT * 
FROM 
    PersonAddress a, 
    Personne b,
    PersonneAdmin c
WHERE a.addressid LIKE '97%' 
    AND b.lastname LIKE 'test%'
    AND b.genderid IS NOT NULL
    AND a.partyid = c.partyid 
    AND b.partyid = c.partyid;

2voto

Sri Siva Points 19

Ceci est une requête correcte pour joindre 3 tables avec le même id**

sélectionner a.empname,a.empsalary,b.workstatus,b.bonus,c.dateofbirth de employee a, Report b, birth c où a.empid=b.empid et a.empid=c.empid et b.empid='103';

employee premier table. report deuxième table. birth troisième table

2voto

Nathan Points 29

Il y a eu beaucoup de réponses mais la leçon globale semble être que vous pouvez utiliser plusieurs JOINS dans une clause WHERE; aussi techonthenet.com (mon patron me l'a recommandé, c'est comme ça que je l'ai trouvé) a de bons tutoriels SQL si vous avez une autre question et que vous voulez juste essayer de la résoudre.

SELECT table1.column1
FROM table1
WHERE table1 > 0 (ou tout ce que vous voulez spécifier)
INNER JOIN table1 
ON table1.column1 = table2.column1

1voto

p.ajay Points 21
SELECT 
A.P_NAME AS [NOM DE L'INDIVIDU],B.F_DETAIL AS [CARACTÉRISTIQUE DE L'INDIVIDU],C.PL_PLACE AS [EMPLACEMENT DE L'INDIVIDU]
FROM 
[dbo].[PEOPLE] A
INNER JOIN 
[dbo].[FEATURE] B ON A.P_FEATURE = B.F_ID
INNER JOIN 
[dbo].[PEOPLE_LOCATION] C ON A.P_LOCATION = C.PL_ID

1voto

Cette requête fonctionnera pour vous

Sélectionnez b.id en tant que 'id', u.id en tant que 'freelancer_id', u.name en tant que 
'free_lancer_name', p.user_id en tant que 'project_owner', b.price en tant que 
'bid_price', b.number_of_days en tant que 'days' de l'utilisateur u, du projet p, de l'enchère b 
où b.user_id = u.id et b.project_id = p.id

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X