반응형
mysql의 테이블이 3개인 내부 조인
이너 조인으로 더 많은 테이블에서 데이터를 선택하고 싶습니다.
이것들이 제 테이블입니다.
Student (studentId, firstName, lastname)
Exam (examId, name, date)
Grade (gradeId, fk_studentId, fk_examId, grade)
나는 모든 학생들이 어떤 시험, 학년, 날짜를 가봤는지를 보여주는 진술서를 쓰고 싶습니다.날짜별로 정렬했습니다.
이것이 제 진술입니다.실행은 되지만 제대로 하고 있는지 확인하고 싶습니다.
SELECT
student.firstname,
student.lastname,
exam.name,
exam.date,
grade.grade
FROM grade
INNER JOIN student
ON student.studentId = grade.gradeId
INNER JOIN exam
ON exam.examId = grade.gradeId
ORDER BY exam.date
거의 정확하게..조인을 보세요. 잘못된 필드를 참조하고 있습니다.
SELECT student.firstname,
student.lastname,
exam.name,
exam.date,
grade.grade
FROM grade
INNER JOIN student ON student.studentId = grade.fk_studentId
INNER JOIN exam ON exam.examId = grade.fk_examId
ORDER BY exam.date
정확한 문장은 다음과 같습니다.
SELECT
student.firstname,
student.lastname,
exam.name,
exam.date,
grade.grade
FROM grade
INNER JOIN student
ON student.studentId = grade.fk_studentId
INNER JOIN exam
ON exam.examId = grade.fk_examId
ORDER BY exam.date
표는 정의된 대외 키 관계에 기초하여 다른 것을 지칭합니다.데이터가 쿼리된 것으로 표시되도록 하려면 ID를 제대로 참조해야 합니다.따라서 적절한 관계를 정의하지 않은 id에만 있는 것이 아니라 ids를 테이블의 적절한 외부 키에 참조해야 합니다.
SELECT
student.firstname,
student.lastname,
exam.name,
exam.date,
grade.grade
FROM grade
INNER JOIN student
ON student.studentId = grade.fk_studentId
INNER JOIN exam
ON exam.examId = grade.fk_examId
GROUP BY grade.gradeId
ORDER BY exam.date
코드를 쓰는 더 전문적인 방법은 "Aliases"를 사용하는 것입니다.
SELECT
s.firstname,
s.lastname,
e.name,
e.date,
g.grade
FROM grade AS g
INNER JOIN student AS s
ON s.studentId = g.fk_studentId
INNER JOIN exam AS e
ON e.examId = g.fk_examId
ORDER BY e.date;
언급URL : https://stackoverflow.com/questions/16013364/inner-join-with-3-tables-in-mysql
반응형
'sourcecode' 카테고리의 다른 글
Express에서 HTML을 뷰 엔진으로 사용하려면 어떻게 해야 합니까? (0) | 2023.09.21 |
---|---|
console.log javascript [Function] (0) | 2023.09.21 |
iframe 응답성 확보 (0) | 2023.09.21 |
목록 맨 앞에 jquery를 추가합니다. (0) | 2023.09.21 |
재료 아이콘을 오프라인으로 호스팅하는 방법은? (0) | 2023.09.21 |