adoquery+dbgird+datasource从两张表(课程信息表,学生选课信息表)中select一些信息在dbgrid中显示课程编号由combobox获得语句如下select 课程信息表.课程编号,课程信息表.课程名称,课程信息表.授课教师,课程信息表.选课总人数,count(*) as 已选人数 from 课程信息表,学生选课信息表 where 课程信息表.课程编号=学生选课信息表.课程编号
and 学生选课信息表.课程编号 like ''%'+combobox8.Text+'%'''
group by 课程信息表.课程编号,课程信息表.课程名称,课程信息表.授课教师,课程信息表.选课总人数
此语句存在两个问题1。因为两表相连,因此没有学生选的课将不会显示,但是希望能显示,该怎么做?2。count出的选课人数是所有选这门课的人数,当一门课有多个老师教的时候,希望能分别显示选各个老师的人数,该怎么做?请大家帮忙
and 学生选课信息表.课程编号 like ''%'+combobox8.Text+'%'''
group by 课程信息表.课程编号,课程信息表.课程名称,课程信息表.授课教师,课程信息表.选课总人数
此语句存在两个问题1。因为两表相连,因此没有学生选的课将不会显示,但是希望能显示,该怎么做?2。count出的选课人数是所有选这门课的人数,当一门课有多个老师教的时候,希望能分别显示选各个老师的人数,该怎么做?请大家帮忙
where 学生选课信息表.课程编号 like ''%'+combobox8.Text+'%'''
group by 课程信息表.课程编号,课程信息表.课程名称,课程信息表.授课教师,课程信息表.选课总人数
select 课程信息表.课程编号,课程信息表.课程名称,课程信息表.授课教师,课程信息表.选课总人数,count(*) as 已选人数 from 课程信息表 Left outer join 学生选课信息表 on 课程信息表.课程编号=学生选课信息表.课程编号
where 学生选课信息表.课程编号 like ''%'+combobox8.Text+'%'''
group by 课程信息表.课程编号,课程信息表.课程名称,课程信息表.授课教师,课程信息表.选课总人数
使用左连接查询,可以将没有学生选的课程列出(null值填充),但是统计已选人数使用count(*),将这些行统计结果为1,而不是期望的0,所以要统计为null的列,
在学生选课信息表中应该有学号字段(stuCode),试试下面的答案:
select 课程信息表.课程编号,课程信息表.课程名称,课程信息表.授课教师,课程信息表.选课总人数,count(stuCode) as 已选人数 from 课程信息表 Left outer join 学生选课信息表 on 课程信息表.课程编号=学生选课信息表.课程编号
where 学生选课信息表.课程编号 like ''%'+combobox8.Text+'%'''
group by 课程信息表.课程编号,课程信息表.课程名称,课程信息表.授课教师,课程信息表.选课总人数
select 课程信息表.课程编号,课程信息表.课程名称,课程信息表.授课教师,课程信息表.选课总人数,count(stuCode) as 已选人数 from 课程信息表 Left outer join 学生选课信息表 on 课程信息表.课程编号=学生选课信息表.课程编号 and 课程信息表.授课教师=学生选课信息表.授课教师
where 学生选课信息表.课程编号 like ''%'+combobox8.Text+'%'''
group by 课程信息表.课程编号,课程信息表.课程名称,课程信息表.授课教师,课程信息表.选课总人数
建议:以后这种情况最好列出表结构,表名、列名使用标识符。