Mysql 用SQL连接四个表
如何联接4个表并检索关于一个ID(行)的信息Mysql 用SQL连接四个表,mysql,oracle,Mysql,Oracle,如何联接4个表并检索关于一个ID(行)的信息 这就是我目前的情况:根据您的评论,问题是您有多个同名列,因此需要使用别名: SELECT Crs_Desc, Enrollment.Enrollme, Enrollment.Offer_No FROM Offerin, Course JOIN Enrollment ON Enrollment.Offer_No = Offering.Offer_No JOIN Student ON Student.Std_ID = Enrollment.Std_
这就是我目前的情况:根据您的评论,问题是您有多个同名列,因此需要使用别名:
SELECT Crs_Desc, Enrollment.Enrollme, Enrollment.Offer_No
FROM Offerin, Course
JOIN Enrollment ON Enrollment.Offer_No = Offering.Offer_No
JOIN Student ON Student.Std_ID = Enrollment.Std_ID
WHERE Enrollment.Std_ID = '103'
GROUP BY Enrollment.Std_ID;
如果此查询无法解决您的问题,请共享您的表数据和预期结果尝试类似的操作
SELECT Student.Student_ID, Course.Crs_Desc,
Enrollment.Std_ID, Enrollment.Offer_No,
Offering.Offer_No
FROM Student
JOIN Enrollment
ON Student.Student_ID = Enrollment.Std_ID
JOIN Offering
ON Enrollment.Std_ID = Offering.Offer_No
JOIN Course
ON Offering.Offer_No = Course.CourseNo
WHERE Student_ID = '103';
此外,WHERE子句看起来可能是错误的。试试“WHERE Student_ID='103'”试试这个:
SELECT Student.Student_ID
,Course.Crs_Desc
,Enrollment.Std_ID
,Enrollment.Offer_No
,Offering.Offer_No
FROM Student
LEFT JOIN Enrollment
ON Student.Student_ID = Enrollment.Std_ID
LEFT JOIN Offering
ON Enrollment.Std_ID = Offering.Offer_No
LEFT JOIN Course
ON Offering.CourseNo = Course.CourseNo
WHERE Student.Student_ID = '103';
到目前为止,你所拥有的东西有什么不起作用?@Undo:我想说的是一切。你能分享表格结构、一些样本数据和你想要达到的结果吗?从提供、注册、课程中选择Student.Student\u ID、Course.Crs\u Desc、incluation.Std\u ID、incluation.Offer\u No、Offer.Offer\u No,学生ORA-00918:列定义不明确这是错误使用别名以避免不明确的列显示它知道enr=注册表吗?这是我人生的一部分confusion@extram什么意思?“注册为enr”会给表添加别名,使其在整个查询中都可以被引用为enr。此查询中没有聚合函数。从“提供为关闭”、“当然”到“学生*错误”,第2行:ORA-00933:SQL命令未正确命名您不需要使用别名,尽管它们通常会使事情更清楚。关键是您需要使用别名或实际的表名来限定列名,以消除歧义。我也得到了一个错误。ORA-00904:“学生”。“学生ID”:无效标识耶我只是更正了名称,但这是错误我得到的ORA-00979:不是课程中的分组表达式。Crs\u desc取出分组依据,你在这里无论如何都不需要它。现在没有错误!!但是,即使103号学生选修了3门课程,也没有选择任何一行。这意味着什么?你的课程表与课程表有什么关系,哪些列?第10行错误:ORA-01722:无效数字a星=课程.Course\u现在什么是Offering.CourseNo和Course.CourseNo的数据类型?如果两列都是VARCHAR2,你报告的错误就没有意义了。您已经参考了
CourseNo
和CourseNo
两个列-这两个列是关键列,数据类型匹配吗?谢谢,老兄,我确实找到了上面的一个。改为使用左连接并更改了两列。我真的很感激。