web-dev-qa-db-ja.com

SQLの複数の列で2つのテーブルを結合する方法は?

2つのテーブルEvalulationValueがあります

両方のテーブルに4つの列があります。しかし、4つのうち3つは同じです。つまり、両方ともCaseNumFileNumActivityNumを持っています。これらの列に加えて、Evaluationには列Gradeがあり、Valueには列Scoreがあります。

CaseNumFileNumActivityNumによって2つを1つのテーブルにマージしたいので、ValueScoreinの両方を持つ5列の新しいテーブルがあります。

使ってもいいですか Inner Joinこれを行うために複数回?

10
JasonSmith

答えははい:内部結合を使用できます共通列に結合を作成できます

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

テーブルを作成

Create table MyNewTab(CaseNum int, FileNum int, 
ActivityNum int,Grade int,score varchar(100))

値を挿入

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
24
Ganesh_Devlekar

いいえ、1つの内部結合ステートメントの「ON」句に異なるフィールドを含めるだけです。

SELECT * from Evalulation e JOIN Value v ON e.CaseNum = v.CaseNum
    AND e.FileNum = v.FileNum AND e.ActivityNum = v.ActivityNum
4
Barett

単一の結合のみを行う必要があります。

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
0
user3175748

基本的には次のようなものが必要です。

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;
0
Jason Colyer
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
0
zXSwordXz