Result, ResultITems 및 GradeScale의 세 테이블을 조인해야했습니다. 내가 할 때, 나는 같은 줄의 두 배 또는 두 줄을 얻는다. 나는 sqlfiddle에서 레코드 만들기를 시도했지만 다른 정확한 결과를 얻는다. 내 로컬 sqlite db 테이블을 만드는 데 사용되는 스키마 정확히 여기에 표시됩니다 동일합니다.단일 레코드에 대해 double 행을 제공하는 범위에서 sql join
결과표
CREATE TABLE Result (
ID INTEGER PRIMARY KEY AUTOINCREMENT,
SubjectID INTEGER REFERENCES Subjects (ID) ON DELETE CASCADE,
SessionID INT REFERENCES Sessions (ID),
TermID INT REFERENCES terms (ID),
ClassID INTEGER REFERENCES Classes (ID)
);
resultItems 테이블
CREATE TABLE ResultItems (
StudentID INTEGER,
ResultID INTEGER REFERENCES Result (ID) ON DELETE CASCADE,
Total DECIMAL(10, 2)
);
그리고 gradescale 테이블 난 각 레코드에 대해, 다음 I 등의 두 행이 쿼리를 실행할 지금
CREATE TABLE gradeScale
(ID INTEGER PRIMARY KEY AUTOINCREMENT,
minscore tinyint NOT NULL,
maxscore tinyint NOT NULL,
grade char(1) NOT NULL,
ClassCatID INTEGER
);
ResultItems 테이블의
Select ri.studentid, ri.Total,g.grade
From ResultItems ri
left join GradeScale g
ON (ri.total >= g.minscore AND ri.total <= g.maxscore)
left join Result r on r.id=ri.resultid
WHERE r.sessionid = 4
AND
r.termid = 1
AND
r.classid = 9
ORDER BY grade ASC;
아래 그림은 내가 을 무엇을 의미하는지에 관해 알기 위해 참조하십시오! [1]
여기 왜 내가 이중 행을 얻고 난 http://sqlfiddle.com/#!7/ffb42/1
을 만든 SQL fibble이다 여기에 이미지 설명을 입력합니다] 내 로컬 db에서 실행할 때 출력에?
의 통지를 취할 수있는 SQL을 다시 썼다. –
왜 LEFT JOIN을 수행하고 WHERE 절에 외부 테이블 조건이 있습니까? 그게 정기적으로 내부 조인 ... (BTW, 결과 및 좋은 테이블 이름을 설명하는 무엇입니까?)? – jarlh
@ GordonLinoff 내가 무슨 뜻인지 이해가 안 돼 – Smith