表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  在读

解决方案 »

  1.   

    select t1.*,t2.* 
    from t1,t2
    where 班号=0401,报名时间=表达式,入学时间=表达式,表1.状态='已报名',表2.状态='在读',按照[状态]排序
      

  2.   

    select t1.*,t2.* 
    from t1,t2
    where 班号=0401 and 报名时间=表达式 and 入学时间=表达式 and 表1.状态='已报名' and 表2.状态='在读' Order By 状态
      

  3.   

    SELECT * FROM (
    SELECT 报名人 AS 姓名,报名时间 AS 时间,状态 
    FROM 表1
    WHERE 班号=0401,报名时间=表达式, 状态='已报名'
    UNION
    SELECT 学员,入学时间,状态
    FROM 表2
    WHERE 班号=0401,入学时间=表达式, 状态='在读'
    ) AS A 
    ORDER BY 状态
      

  4.   


        请楼主把前提条件写清楚。比如,是什么数据库?SQL Server还是Access,表结构写完整。包括字段名、字段类型。表1和表2中重复的行怎么处理等等等等。    顺便说一下,一、二楼写的都不对。
      

  5.   

    应该使用留香的东西,嘿嘿SELECT * FROM (
    SELECT 报名人 AS 姓名,报名时间 AS 时间,状态 
    FROM 表1
    WHERE 班号=0401,报名时间=表达式, 状态='已报名'
    UNION
    SELECT 学员,入学时间,状态
    FROM 表2
    WHERE 班号=0401,入学时间=表达式, 状态='在读'
    ) AS A 
    ORDER BY 状态
      

  6.   

    补充一下:
    where 条件中的 班号=0401  有可能不正确
    如果类型为整则前面不会出现0401而应是401
    如果类型为字符则条件中应写为 班号='0401'所以你最好象 中海 大侠说的那样把环境叙述清楚
    这样大家才好帮你
    在VB中也可以按F1调用系统帮忙来查询select语句的用法
    在MSDN中可能不够直观,你可以VB中随便哪个地方写上SELECT
    然后把光标在这单词上点一下,再按F1就会有关于<SQL 引用>的帮助了
      

  7.   


    我通常是在ACCESS中创建查询,SQL语句就有了。
      

  8.   

    有id字段,上面的只是主要几个字段,在sql server数据库里。
      

  9.   

    "SELECT NAME, DATE, STATE FROM (SELECT NAME, DATE, STATE FROM TABLE1 WHERE ID = '0401' AND DATE = '" & TXTDATE.TEXT & "' AND STATE = '已报名'
    UNION
    SELECT NAME, DATE, STATE FROM TABLE2 WHERE ID = '0401' AND DATE = '" & TXTDATE.TEXT & "' AND STATE = '在读') AS MAIN ORDER BY STATE"
      

  10.   

    回复人: leolan(史留香) ( ) 信誉:105  2004-04-20 11:50:00  得分:0 
     
     
      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 状态