tres tablas relacionar left inner consultas consulta con mysql database inner-join

relacionar - left join con tres tablas mysql



UniĆ³n interna con 3 tablas en mysql. (3)

Casi correctamente ... Mira las uniones, estás refiriendo los campos incorrectos

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

Quiero seleccionar datos de más tablas con Inner join.

Estas son mis mesas.

Student (studentId, firstName, lastname) Exam (examId, name, date) Grade (gradeId, fk_studentId, fk_examId, grade)

Quiero escribir una declaración que muestre qué examen, grado y fecha han sido a los estudiantes. Ordenado después de la fecha.

Esta es mi declaración. Se ejecuta, pero quiero asegurarme de que lo estoy haciendo correctamente.

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


La declaración correcta debe ser:

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

Una tabla se refiere a otra sobre la base de la relación de clave externa definida. Debe referir los identificadores correctamente si desea que los datos se muestren como se consultaron. Por lo tanto, debe referir los ID a las claves externas adecuadas en la tabla en lugar de solo a los ID que no definen una relación adecuada


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