表1:报名人,报名时间,状态
柳颜 2004-4-1 已报名
王觉 2004-4-5 已报名
张进 2004-4-2 取消报名
表2:学员,入学时间,状态
刘山 2004-3-5 在读
张云 2003-4-5 毕业要得到记录集:(where条件是:班号=0401,报名时间=表达式,入学时间=表达式,表1.状态='已报名',表2.状态='在读',按照[状态]排序)
姓名,时间,状态
柳颜 2004-4-1 已报名
王觉 2004-4-5 已报名
刘山 2004-3-5 在读
柳颜 2004-4-1 已报名
王觉 2004-4-5 已报名
张进 2004-4-2 取消报名
表2:学员,入学时间,状态
刘山 2004-3-5 在读
张云 2003-4-5 毕业要得到记录集:(where条件是:班号=0401,报名时间=表达式,入学时间=表达式,表1.状态='已报名',表2.状态='在读',按照[状态]排序)
姓名,时间,状态
柳颜 2004-4-1 已报名
王觉 2004-4-5 已报名
刘山 2004-3-5 在读
from t1,t2
where 班号=0401,报名时间=表达式,入学时间=表达式,表1.状态='已报名',表2.状态='在读',按照[状态]排序
from t1,t2
where 班号=0401 and 报名时间=表达式 and 入学时间=表达式 and 表1.状态='已报名' and 表2.状态='在读' Order By 状态
SELECT 报名人 AS 姓名,报名时间 AS 时间,状态
FROM 表1
WHERE 班号=0401,报名时间=表达式, 状态='已报名'
UNION
SELECT 学员,入学时间,状态
FROM 表2
WHERE 班号=0401,入学时间=表达式, 状态='在读'
) AS A
ORDER BY 状态
请楼主把前提条件写清楚。比如,是什么数据库?SQL Server还是Access,表结构写完整。包括字段名、字段类型。表1和表2中重复的行怎么处理等等等等。 顺便说一下,一、二楼写的都不对。
SELECT 报名人 AS 姓名,报名时间 AS 时间,状态
FROM 表1
WHERE 班号=0401,报名时间=表达式, 状态='已报名'
UNION
SELECT 学员,入学时间,状态
FROM 表2
WHERE 班号=0401,入学时间=表达式, 状态='在读'
) AS A
ORDER BY 状态
where 条件中的 班号=0401 有可能不正确
如果类型为整则前面不会出现0401而应是401
如果类型为字符则条件中应写为 班号='0401'所以你最好象 中海 大侠说的那样把环境叙述清楚
这样大家才好帮你
在VB中也可以按F1调用系统帮忙来查询select语句的用法
在MSDN中可能不够直观,你可以VB中随便哪个地方写上SELECT
然后把光标在这单词上点一下,再按F1就会有关于<SQL 引用>的帮助了
我通常是在ACCESS中创建查询,SQL语句就有了。
UNION
SELECT NAME, DATE, STATE FROM TABLE2 WHERE ID = '0401' AND DATE = '" & TXTDATE.TEXT & "' AND STATE = '在读') AS MAIN ORDER BY STATE"
SELECT * FROM (
SELECT 报名人 AS 姓名,报名时间 AS 时间,状态
FROM 表1
WHERE 班号=0401,报名时间=表达式, 状态='已报名'
UNION
SELECT 学员,入学时间,状态
FROM 表2
WHERE 班号=0401,入学时间=表达式, 状态='在读'
) AS A
ORDER BY 状态
’偶也凑个热闹:
where 后面的逗号改为 and 应该没问题的,楼主的目的无非是想把班号为0401的已报名的和就读的记录捏到一起而已。
0401 字段要改成字符型的。
可以把以上代码放到server的查询分析器里,看看结果不就行了。SELECT * FROM (SELECT 报名人 AS 姓名,报名时间 AS 时间,状态 FROM 表1 WHERE 班号='0401' and 报名时间=表达式 and 状态='已报名' UNION SELECT 学员,入学时间,状态 FROM 表2 WHERE 班号='0401' and 入学时间=表达式 and 状态='在读') AS A ORDER BY 状态