如何把SELECT COUNT两句合并起来

wxwx0104 2011-05-05 10:15:23
Data3.RecordSource = "SELECT count (*) as 本班应到 FROM 学生"
Data3.RecordSource = "SELECT count (*) as 本班实到 FROM 学生 WHERE 是否签到 = '是'"
就是这两句 要能够同时实现吧 有一个DBGRID一个column是本班应到 一个column是本班实到
...全文
344 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wxwx0104 2011-05-08
  • 打赏
  • 举报
回复
成功了,谢谢各位的分析,SELECT语句好用,又巧妙谢谢各位了。
closevb 2011-05-06
  • 打赏
  • 举报
回复
jjhhgg1111的是非常正确的呀。
closevb 2011-05-06
  • 打赏
  • 举报
回复
Access中直接可以用

Data3.RecordSource = "SELECt count(*) as 本班应到 ,sum(iif(是否签到 = '是',1,0)) as 是否签到1 from 学生"
心匪石不可转 2011-05-06
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wxwx0104 的回复:]
5楼 不行。。。
[/Quote]

5楼的是sql server,你的应该是access,以后要说明是什么数据库
心匪石不可转 2011-05-06
  • 打赏
  • 举报
回复
Data3.RecordSource = "SELECT count (*)                      as 本班应到  " & _
" , sum(iif(是否签到 = '是', 1, 0)) as 本班实到 " & _
" FROM 学生 "

wxwx0104 2011-05-05
  • 打赏
  • 举报
回复
5楼 不行。。。
三断笛 2011-05-05
  • 打赏
  • 举报
回复
select count(*) as '应到',
sum(case when 是否签到='是' then 1 else 0 end) as '实到'
from 学生
wxwx0104 2011-05-05
  • 打赏
  • 举报
回复
select sum(case when 是否签到 = '是' then 1 else 0 end) 本班实到,count(1) 本班应到
from 学生

select (SELECT count (*) as 本班应到 FROM 学生),(SELECT count (*) as 本班实到 FROM 学生 WHERE 是否签到 = '是')

Data3.RecordSource = "select count(case when 是否签到 = '是' then 1 end) as 本班应到,count(case when 是否签到 = '是' then 1 end) as 本班实到 From 学生"

这三种都不行啊 急啊
dbcontrols 2011-05-05
  • 打赏
  • 举报
回复
LEFT JOIN 和 RIGHT JOIN 运算
用于 FROM 子句时,把源表记录组合起来。

语法
FROM表1 [ LEFT | RIGHT ] JOIN表2
ON 表1.字段1 compopr 表2. 字段2

LEFT JOIN 及 RIGHT JOIN 运算可分为以下几个部分:

部分 说明
table1, table2 记录被组合的表的名称。
field1, field2 被联接的字段的名称。且这些字段必须有相同的数据类型及包含相同类型的数据,但它们不需要有相同的名称。
compopr 任何的关系比较运算子:"=," "<," ">," "<=," ">=," 或 "<>."


说明
用 LEFT JOIN 运算 创建左边外部联接.左边外部联接将包含了从第一个(左边)开始的两个表中的全部记录,即使在第二个(右边)表中并没有相符值的记录。

用RIGHT JOIN 运算 创建 右边外部联接.右边外部联接将包含了从第二个(右边)开始的两个表中的全部记录,即使在第一个(左边)表中并没有匹配值的记录。

例如,可以使用 LEFT JOIN 与部门(左边)及员工(右边)表来选择所有的部门,包含了没有分配到员工的部门。可以使用 RIGHT JOIN 选择所有的员工,包含了没有分配到部门的员工。

下列示例显示如何在类标识符字段中联接类表及产品表。查询将会列出所有种类的列表,包含那些没有产品在其中的种类:

SELECT CategoryName,

ProductName

FROM Categories LEFT JOIN Products

ON Categories.CategoryID = Products.CategoryID;


在本例中,CategoryID 是联接的字段,但由于它不包含在 SELECT 语句中,因此,也不包含在查询结果中。要包含联接的字段,请在 SELECT 语句中输入字段名 — 在这个示例中为 Categories.CategoryID。


--------------------------------------------------------------------------------

注意

欲创建只包含联接字段中数据相同的记录的查询,请用 INNER JOIN 运算。

在 INNER JOIN 之中可以写一个嵌套的 LEFT JOIN 或一个 RIGHT JOIN,但是在一个 LEFT JOIN 或一个 RIGHT JOIN 之中不能写嵌套的 INNER JOIN。请参阅 INNER JOIN 主题中有关使用嵌套的讨论,从其中可获知如何在其它联接中编写嵌套联接的信息。
可以链接多个 ON 子句。若需更多信息,请参阅在 INNER JOIN 主题中的子句链接的讨论。
若试图联接包含 Memo或 OLE Object数据的字段,会导致错误。

dbcontrols 2011-05-05
  • 打赏
  • 举报
回复
LEFT JOIN、RIGHT JOIN 运算示例

此示例假设在员工表中存在假设的单位名称和单位标识符的字段。注意这些字段实际上在 Northwind 数据库员工表中并不存在。

此示例选择所有单位,包含那些不含员工的单位。

此示例调用过程 EnumFields 过程,且可以在 SELECT 语句示例中找到该过程。

Sub LeftRightJoinX()


Dim dbs As Database, rst As Recordset


' 在您的计算机中修改此行使其正确指到 Northwind 的路径。

Set dbs = OpenDatabase("Northwind.mdb")

' 对运费超过 $100 的订单,



' 选取所有单位,包括

' 没有员工的

Set rst = dbs.OpenRecordset _

("SELECT [Department Name], " _

& "FirstName & Chr(32) & LastName AS Name " _

& "FROM Departments LEFT JOIN Employees " _

& "ON Departments.[Department ID] = " _

& "Employees.[Department ID] " _

& "ORDER BY [Department Name];")



' populateRecordset。

rst.MoveLast



' 调用 EnumFields 来打印记录集的内容。

'传递记录集对象和要求的字符宽度。

'

EnumFields rst, 20


dbs.Close


End Sub


dbcontrols 2011-05-05
  • 打赏
  • 举报
回复
搜索联合查询

1,217

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧