
看你的要求似乎是要求两个集合的并集,类似下面的方法
select username, Title from Users inner join topic on usersuserid=topicuserid --这是发表的
union all
select username,title from Users inner join reply on UsersUserid=ReplyUserid inner join topic
on topictitleid=replytitleid --这是参与回复的
例如:表a中的datetime字段都是‘2013-05-11
13:10:00‘这种格式的,筛选其中8:00到10:00之间的。
select
from
表awhere
substring(convert(varchar,字段名,120),12,8)
between
'08:00:00'
and
'10:00:00'
可用group
by……having来实现。
可做如下测试:
1、创建表插入数据:
create
table
test
(id
int,name
varchar(10))
insert
into
test
values
(1,'张三')
insert
into
test
values
(2,'李四')
insert
into
test
values
(3,'张三')
insert
into
test
values
(4,'王五')
具体做法:
新建工程时选数据工程,此时VB6集成调试环境左边工具箱内已加载了有关数据库编程必须的控件。
然后在FORM1窗体中添加ADODC控件和DATAGRID控件,将DATAGRID1的属性DATASOURCE选ADODC1,打开ADODC1控件属性页使用连接字符串,选生成,在提供者选项中选MICROSOFT jet 40 OLE DB Provider,然后按要求连接数据库等。在ADODC1控件属性页使用连接字符串空白文本窗口中就有一长串字符串,注意该字符串可复制到程序代码用于编程。ADODC1控件属性页的数据源内有命令文本(SQL)编写窗口可编写SQL查询语言。该窗口的SQL语句可复制到程序代码用于编程。
SQL查询语言主要结构为:
Select 查询字段 from 表名 Where 查询条件语句 [排序语句或分组语句]
查询字段必须分别用(西文)逗号分开或就用一个号代替,上述查询中排序语句建议最好应用。
SQL查询语言如有错程序运行时告诉你出错,作相应改动即可。本人一般先按上述连接,SQL用"SELECT FROM TabelName"作调试,无问题,用一个按钮孔件将前述需复制的连接字符串和SQL查询语言先复制于按钮控件的CLICK事件中备着,以便放着以后使用。然后删去ADODC1孔件,再添加ADODC1控件再添其他内容。
代码如下,请按你实际要求修改,
Private Sub Form_Load()
Text1 = ""
With Adodc1
Adodc1ConnectionString = "Provider=MicrosoftJetOLEDB40;Data Source=E:\db1mdb;Persist Security Info=False"
Adodc1RecordSource = "select name from b1 order by name"
Adodc1Refresh
DataGrid1Refresh
End With
End Sub
Private Sub Text1_Change()
Adodc1ConnectionString = "Provider=MicrosoftJetOLEDB40;Data Source=E:\db1mdb;Persist Security Info=False"
Adodc1RecordSource = "select name from b1 where name >='" & Text1 & "' order by name"
Adodc1Refresh'对查询更新
DataGrid1Refresh
End Sub
补充代码如下,Tabel1是你需查询的数据表:
Private Sub Command1_Click()
Adodc1ConnectionString = "Provider=MicrosoftJetOLEDB40;Data Source=E:\db1mdb;Persist Security Info=False"
Adodc1RecordSource = "select from Tabel1 where 部门 ='" & "车间" & "'"
Adodc1Refresh'对查询更新
DataGrid1Refresh
End Sub
首先来说一下sql的大概的执行顺序,主流的数据库一般都是这样的,from表(找到数据集)—where(对数据进行删选)—group by(对数据进行分组,合并处理)—select(选出数据项)—order by(对结果数据集进行排序),这是大致粗糙的顺序,还有排重啊、删选组啊等等,不细说了,最重要的是看执行计划,你会清晰的看到语句执行的顺序和成本消耗(cost)。
我猜到lz在纠结什么问题。
where aChange_Time=(select MIN(cChange_Time) from Change c where cChange_Time>bChange_Time) 是这句的结果集吧
换个角度来想,其实这就话的意思就是在a表中大于b表的时间集中选最小的,很显然当b表时间为
2011-12-5时a表中大于此值的最小值为2011-12-6;当b表时间为2011-6-7时a表中大于此值的最小值为2011-12-5,因此会有两条记录产生。执行下面语句看一下,将非常清晰。
以上就是关于SQL数据库三个表里筛选语句问题全部的内容,包括:SQL数据库三个表里筛选语句问题、SQL数据库语句筛选某一段时间内某一表某一列相同数据、VB如何筛选数据库内容等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)