2014-10-27 161 views
0

我有一张表,我正在计算传递的课程数量,并列出传递的模块。COUNT函数中的where子句并加入两个查询

我遇到的第一个问题是如何放入where变量,以便它不是特定于客户(我可以使用下面的查询来查询特定客户和特定课程),但我会喜欢通用查询其中结果将在用户,当然像下面

SELECT FirstName 
    ,LastName 
    ,CourseTitle 
    ,Noofmodules 
    ,count(Coursecompleted) AS modulescompleted 
FROM EStudentsprogress 
WHERE Coursecompleted = '1' 
    AND EmailAddress = '[email protected]' 
    AND CourseTitle = 'Microsoft MOS 2010 EXCEL' 
GROUP BY FirstName 
    ,LastName 
    ,CourseTitle 
    ,Noofmodules 

一个是我怎么能做出列出如上的结果,因此我不指定电子邮件地址或课程名称而言是不同的(试图让结果为所有的客户)

另外我有一个查询,列出客户传递的课程,我会喜欢colu将通过的课程列表添加到上面的结果中,但将其作为每个课程的列。

SELECT FirstName 
    ,LastName 
    ,CourseTitle 
    ,EmailAddress 
    ,CourseModule AS coursepassed 
FROM EStudentsprogress 
WHERE coursecompleted = 1 

干杯

+0

你能添加你想看到你的第二个查询什么的例子吗? – 2014-10-27 12:59:19

+0

假设微软课程有6个模块(模块1,模块2.etc),并且客户只传递模块1和模块4.我希望第一个表格在客户的课程结束时有附加的结果列,内容将模块1,另一列课程通过,列将模块4. – 2014-10-27 13:04:46

+0

只需选择所有通过的课程,并在每个用户的PHP端计数 – 2014-10-27 13:14:08

回答

0

难道你们就不能只是添加的电子邮件地址和课程名称字段选择字段和GROUP BY子句。

此外,您还可以使用GROUP_CONCAT带回包含所有课程模块的字段。

事情是这样的: -

SELECT FirstName, 
     LastName, 
     CourseTitle, 
     Noofmodules, 
     EmailAddress, 
     CourseTitlecount, 
     COUNT(Coursecompleted) as modulescompleted, 
     GROUP_CONCAT(CourseModule) as modulescompletednames 
FROM EStudentsprogress 
WHERE Coursecompleted = '1' 
GROUP BY FirstName, LastName, CourseTitle, Noofmodules, EmailAddress, CourseTitlecount ; 
+0

我有不正确的语法附近的关键字FROM。我正在使用tsql – 2014-10-27 13:41:34

+1

在“GROUP_CONCAT”之后用单个开放式括号替换双开放式括号 – Bohemian 2014-10-27 13:42:37