Hoe voeg je twee tabellen samen met meerdere kolommen in SQL?

Ik heb twee tabellen met de namen Evaluationen 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 Evaluationde kolom Gradeen heeft de tabel Valuede kolom Score.

Ik wil de twee samenvoegen tot één tabel, samen met CaseNum, FileNumen ActivityNum, dus ik heb een nieuwe tabel met vijf kolommen, waaronder Valueen Score.

Kan ik Inner Joinmeerdere keren gebruiken om dit te doen?


Antwoord 1, autoriteit 100%

Ja: u kunt Inner Joingebruiken 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

Other episodes