我正在为我的大学使用php开发基于Web的应用程序,我需要显示有多少学生同时参加一些课程,以便他们避免安排冲突。

这是我的架构:

studentID   course   grade   program
324532      csc232   0       computer science

我正在使用php,这是SQL查询。 我将等级设为0,因为他/她现在正在上这门课。

$result = mysql_query("SELECT s1.course AS c1 , s2.course AS c2 ,count(*) AS count 
FROM student s1 ,student s2  
WHERE  s1.studentID = s2.studentID 
AND s1.course!=s2.course AND s1.grade='0' AND s2.grade='0' GROUP BY s1.course,s2.course");

我得到的答案是这样的:

cscs321   csci322      6 // there is 6 students taking this two courses together
csci321   csci113      4 // there is 4 students taking these two subjects together 

问题是我得到了一些重复的结果。 例如,csci321,csc322与csci322和csci321相同。

如何避免这种重复?

===============>>#1 票数:3

您可以尝试以下方法:

SELECT
    s1.course AS c1,
    s2.course AS c2,
    count(s2.studentID) AS count
FROM student s1 
JOIN student s2 ON (
    s1.studentID = s2.studentID 
    AND s1.course<s2.course  -- <-- this line is important
    AND s1.grade='0' 
    AND s2.grade='0'
    )
GROUP BY
    s1.course,
    s2.course;

想法是按行对课程进行“排序”,以便

csci321, csc322

csc322, csci321

被认为是相同的,因为csc233 < csci321

===============>>#2 票数:-2

您应该使用SUM而不是COUNT因为您需要的是学生的总数而不是计数。

  ask by user1092661 translate from so

未解决问题?本站智能推荐:

3回复

SQL连接在左表中显示重复项

我正在建立一个汽车租赁系统,我有2张桌子,一张用于租车,另一张用于租车。 我只希望表1中的所有内容显示一次,而表2中的所有内容都显示在表1下。 假设我的表格如下所示: 表格1 ID 汽车 模型 表2 id(与表1 id相同) 租金
1回复

在JOIN中重复的SQL结果-Codeigniter

我正在尝试将“ clinicas”列表与您的“ telefones_clinicas”和“ planos_clinicas”一起返回。 我可以有多个“ telefones_clinicas”和“ planos_clinicas”,但这不是必需的。 但是,如果我有多个'telefones_
2回复

消除MySQL左联接查询中的重复列

我有两个表:问题(id_question,name_question,text_question)和选择(id_choice,text_choice,id_question) 我在php代码中的查询是: 当我检查结果时: 我得到的是: 我想要的是: 那么在S
2回复

使用php消除选择中的重复项

我想消除使用PHP创建的选择下拉列表中的所有重复项。 我创建下拉列表的PHP代码如下: 但这带来了从Oracle表写入的所有重复项。 如何消除重复项? 我尝试了array_unique但失败了。
3回复

SQL:消除两个表中的重复行

我有两张桌子。 我想与两个表进行比较,并删除重复的值。 但是首先,我需要查找“ A-Confirm-tbl”,如果ID已确认,则只能从上表中将其删除。 我写了一个简单的SQL代码,但是没有用。
1回复

如何修改此工作的SQL SELECT / JOIN查询以删除重复项?

我在修改它以删除重复记录时遇到麻烦。 在这种情况下,对于给定的meta_key,我具有三个具有相同meta_value的帖子,并且它返回了两个结果(GROUP BY可能有问题-仍在解决)。 但是,将第一个SELECT更改为DELETE无效。 这不是我要更改的部分,因此从两个表中都删除了数据
2回复

SQL:在2列中检查重复项

我正在构建一个Web应用程序,用户可以在其中回答问题。 我正在尝试运行一个查询,其中将这些答案插入表中,但用户只能回答一次相同的问题。 就我而言,查询必须检查question_id和reply_user的重复项。 (reply_id已被定义为主键)。 例如,当我在表中有答案:ques
1回复

从左联接中删除重复项? [重复]

这个问题已经在这里有了答案: 具有内部联接的SQL max() 1个答案 我在PHP脚本中有上述查询,该脚本显示了来自MySQL数据库的玩家统计信息。 一切正常,但是,有些玩家重复输入 我无法删除重复的条目,因为它是一项功能,而不是错误。 有什么办法
3回复

JOIN中的SQL JOIN

我不确定如何问这个问题,甚至不确定如何给它加上标题,所以很抱歉以前是否有人问过这个问题。 我创建了一个联接,可检索我需要的所有信息。 有点。 它从客户表中返回客户ID而不是客户的详细信息: 我的客户表是: 如何在同一SQL查询中使该查询返回实际的客户信息,例如姓名,
3回复

SQL SELECT JOIN重复输出

这是查询 这是输出: 知道怎么解决吗? 我的查询有什么问题? 我要做的是: 主要论坛: 主持人1 主持人2 主持人3 ... 分论坛: 主持人1 主持人2 ...... 分论坛: