Ik heb twee tabellen met de namen Evaluation
en Value
.
In beide tabellen zijn er vier kolommen. Maar drie van de vier zijn hetzelfde. Met andere woorden, ze hebben allebei de kolommen CaseNum
, FileNum
, ActivityNum
. Daarnaast heeft de tabel Evaluation
de kolom Grade
en heeft de tabel Value
de kolom Score
.
Ik wil de twee samenvoegen tot één tabel, samen met CaseNum
, FileNum
en ActivityNum
, dus ik heb een nieuwe tabel met vijf kolommen, waaronder Value
en Score
.
Kan ik Inner Join
meerdere keren gebruiken om dit te doen?
Antwoord 1, autoriteit 100%
Ja: u kunt Inner Join
gebruiken om op meerdere kolommen mee te doen.
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
Tafel maken
CREATE TABLE MyNewTab(CaseNum int, FileNum int,
ActivityNum int, Grade int, Score varchar(100))
Waarden invoegen
INSERT INTO MyNewTab Values(CaseNum, FileNum, ActivityNum, Grade, Score)
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
Antwoord 2, autoriteit 15%
Nee, neem gewoon de verschillende velden op in de “Aan” -clausule van 1 innerlijke join-verklaring:
SELECT * from Evalulation e JOIN Value v ON e.CaseNum = v.CaseNum
AND e.FileNum = v.FileNum AND e.ActivityNum = v.ActivityNum
Antwoord 3
U hoeft alleen maar een enkele join te doen:
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
Antwoord 4
U wilt eigenlijk iets in de trant van:
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;
Antwoord 5
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