J'ai deux tables Evalulation
et Value
Dans les deux tableaux, il y a quatre colonnes. Mais trois des quatre sont les mêmes. En d'autres termes, ils ont tous les deux CaseNum
, FileNum
, ActivityNum
. En plus de ces colonnes, Evaluation
a la colonne Grade
et Value
a la colonne Score
.
Je veux fusionner les deux en une seule table par CaseNum
, FileNum
, ActivityNum
j'ai donc une nouvelle table de 5 colonnes avec à la fois Value
et Score
dedans.
Puis-je utiliser Inner Join
plusieurs fois pour ce faire?
La réponse est oui: vous pouvez utiliser la jointure interne vous pouvez créer une jointure sur les colonnes communes
select E.CaseNum, E.FileNum, E.ActivityNum,E.Grade,V.score from Evalulation E
inner join Value V
ON E.CaseNum=V.CaseNum and
E.FileNum=V.FileNum and
E.ActivityNum=V.ActivityNum
Créer une table
Create table MyNewTab(CaseNum int, FileNum int,
ActivityNum int,Grade int,score varchar(100))
Insérer des valeurs
Insert into MyNewTab Values(CaseNum, FileNum, ActivityNum,Grade,score)
select E.CaseNum, E.FileNum, E.ActivityNum,E.Grade,V.score from Evalulation E
inner join Value V
ON E.CaseNum=V.CaseNum and
E.FileNum=V.FileNum and
E.ActivityNum=V.ActivityNum
Non, il suffit d'inclure les différents champs dans la clause "ON" de 1 instruction de jointure interne:
SELECT * from Evalulation e JOIN Value v ON e.CaseNum = v.CaseNum
AND e.FileNum = v.FileNum AND e.ActivityNum = v.ActivityNum
Vous ne devez effectuer qu'une seule jointure:
SELECT e.Grade, v.Score, e.CaseNum, e.FileNum, e.ActivityNum
FROM Evaluation e
INNER JOIN Value v ON e.CaseNum = v.CaseNum AND e.FileNum = v.FileNum AND e.ActivityNum = v.ActivityNum
Vous voudriez essentiellement quelque chose comme:
SELECT e.*, v.Score
FROM Evaluation e
LEFT JOIN Value v
ON v.CaseNum = e.CaseNum AND
v.FileNum = e.FileNum AND
v.ActivityNum = e.ActivityNum;
SELECT E.CaseNum, E.FileNum, E.ActivityNum, E.Grade, V.Score
FROM Evaluation E
INNER JOIN Value V
ON E.CaseNum = V.CaseNum AND E.FileNum = V.FileNum AND E.ActivityNum = V.ActivityNum