什么样的JOIN语句可以从3个表中检索正确的数据?

时间:2018-04-03 13:35:59

标签: mysql sql vb.net phpmyadmin

我目前正在开发一个类似于学校报告系统的VB.NET项目。为了这个问题,我想从3个表中检索数据。以下详细介绍了它们的字段......

var myJSON = '{ "name":"John", "age":31, "city":"New York" }';
var myObj = JSON.parse(myJSON);
document.getElementById("demo").innerHTML = myObj.name;

下图可能会有所帮助......

我现有的系统需要输入特定的SID。然后,我可以使用CT表的SELECT查询检索相应的CID和TargetGrade。另外,我可以为每个学生的CT检索CGrade和RNumber字段。

我面临的问题是设计我需要的查询,可以为每个学生的特定课程提供相应的CourseName,CGrade,TargetGrade和RNumber。我知道内部,右侧和左侧连接,但将其应用于3个表格被证明是一个挑战。任何建议都将不胜感激,我会对任何问题持开放态度。

谢谢大家。

2 个答案:

答案 0 :(得分:2)

您将使用INNER JOIN在各自/共享密钥上将表连接在一起。如下所示:

SELECT
    Students.StudentID,
    Students.Studentname,
    Courses.CourseName,
    CoursesTakes.TargetGrade,
    Reports.CurrentGrade,
    Reports.ReportNumber
FROM
    Students
    INNER JOIN CoursesTakes ON Student.StudentID = CoursesTakes.StudentId
    INNER JOIN Courses ON CoursesTakes.CourseID = Courses.CoursesID
    INNER JION Reports ON CoursesTakes.TakeID = Reports.CourseTakeID
WHERE
    Students.StudentID = <yourstudentid>

如果这不能回答问题,请分享一些示例数据和您想要的结果,以便我们了解您的数据结构。

答案 1 :(得分:0)

您可以尝试完全加入以检索所有记录:

select 
    Student.*, CourseTake.*, courses.*,Report.* 
from 
    students 
full join  
    CourseTake on Student.ID == CourseTake.StudentID
full join  
    Courses on Courses.id == CourseTake.StudentID
full join  
    Report on CourseTake.ID = CourseTake.Take ID