我很难找到解决这个问题的正确方法。
Database tables:
Student(stdID[pk], stdName, stdSet)
Enrollment(stdID[pk], crsID[pk], year[pk], semester[pk], grade)
Offering(crsID[pk], year[pk], semester[pk], instrID)
Course(crsID[pk], crsTitle, creditHrs)
Instructor(instrID[pk], instrName, dept)查找在2006至2008年间教授过给定学生A01234567的所有讲师。列出学生ID、instructorID和年份。不要重复行。
我最初的想法是:
SELECT DISTINCT stdID, instrID, year
FROM Student s
JOIN Instructor i ON Offering o (o.instrID = i.instrID)
JOIN Offering o ON Course c (c.crsID = o.crsID)
WHERE stdID = 'A01234567'
AND date BETWEEN (2006 AND 2008);然而,这并不完全正确。我注意到这与“提供连接时缺少2列”有关,但我不知道这是什么意思……
发布于 2012-12-11 08:00:36
您的联接语法不正确。以下是您的查询,已修复,因此它至少在语法上是正确的。这可能会帮助您转向解决方案:
SELECT DISTINCT stdID, instrID, year
FROM Instructor i JOIN
Offering o
ON o.instrID = i.instrID join
Course c
on c.crsID = o.crsID
WHERE stdID = 'A01234567' AND date BETWEEN (2006 AND 2008);https://stackoverflow.com/questions/13811202
复制相似问题