获得每个部门的教授::评论计数SQL

时间:2011-04-02 15:54:47

标签: sql

所以,我尝试使用这个查询:

SELECT name, pID, fname, lname, picpath, email
FROM Department, Professor
WHERE Department.dID = Professor.dID
AND Department.dID = ?
AND Professor_Comment.pcID = Professor.pcID
AND Professor_Comment.pcID = Comment.pcID;

这不起作用。它返回0结果

我的表格如下: 部门 - dept

教授 - prof

教授评论 - prof_comm

评论 - comment

1 个答案:

答案 0 :(得分:2)

因为你正在学习我会建议你一次构建这篇文章,以便更好地了解正在发生的事情,以便你能解决这个问题。

例如,首先,构造查询以首先返回部门名称和教授信息。类似的东西:

SELECT name, pID, fname, lname, picpath, email 
FROM Department, Professor 
WHERE Department.dID = Professor.dID AND Department.dID = ?

我建议使用别名,以便更容易理解。不确定你是否已经接受过这方面的教育,但这确实使阅读查询变得更加容易:

SELECT d.name, p.pID, p.fname, p.lname, p.picpath, p.email 
FROM Department d, Professor p
WHERE d.dID = p.dID AND d.dID = ?

然后在下一个表中添加要加入的内容,依此类推,直到它返回您需要的所有内容。

你正在做的加入是旧学校/旧式 - Department.dID = Professor.dID。再说一遍,我不确定你的教学方法,但现在普遍认为没有表连接条款不在你的where子句中。相反,上面的查询看起来像:

SELECT d.name, p.pID, p.fname, p.lname, p.picpath, p.email 
FROM Department d
INNER JOIN Professor p on d.dID = p.dID
WHERE d.dID = ?

当然,如果您尚未显示此内容,那么您可能还不想使用此语法。 : - )

编辑 - 当我在您的数据库模型中查看更多内容时,我不确定您为何会有教授评论。这是一个联结表,但只有在存在多对多关系时才需要这种表。

教授与评论的关系是一对多的。教授可能会有很多评论,但评论只能有一位教授。如果我理解了这一点,那么你就不需要教授评论表,因为此时布局就出现了。