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