我数据库有三个表,分别是T1,T2,T3其中T1,T2中的数据字段值都一样为ID Number(学号) IP(就是IP地址)Time(签到时间)类型(T1T2分别存的是签到,签退字),T3表是学生表(包括学生的学号,姓名信息),我想从这三个表中取数据目的是学生每点击签到签退按钮,另一个页面显示签到或签退的记录(包含学号,姓名,IP,时间,类型),我写的语句是select * from Pre0,Pre1,Member WHERE Member.Number=Pre1.Number AND Pre0.Number=Member.Number order by Pre0.Time,Pre1.Time asc,但显示的所有类型都是签到,而且记录的条数也不正确,谁能帮我指正一下吗?谢谢

解决方案 »

  1.   

    记录肯定是不对的,你这条语句只能查到那些既签了到又签了退的学生
    ,应该拆成2个语句,分别查签到和签退
    select * 
    from Pre0,Member 
    WHERE Pre0.Number=Member.Number 
    order by Pre0.Time ascselect * 
    from Pre1,Member 
    WHERE Pre1.Number=Member.Number 
    order by Pre1.Time asc
      

  2.   

    我能明白2楼的意思,但是我想的是让签到和签退在一个GridView控件中显示,即不论该学生是签到还是签退,都依次显示在这个控件中,只是类型中有的是签到有的是签退,你知道应该怎样做到这一点吗?就是按你说的分成两个语句
      

  3.   


    --既然是放在2个表中,如果要一起显示的话,应该这样。
    --然后按类型做一个排序,把签到、签退分开。select  * from (
    select  t1.*,t3.name from t1 ,t3 where t1.Number=t3.Number
    union 
    select  t2.*,t3.name from t2 ,t3 where t1.Number=t3.Number) a
    order by 类型 asc
      

  4.   

    回复6楼,我一会试试,不过看到你的标签(触发器专家),我想这样行不行:分别在Pre0,Pre1建一个触发器,作用是每当插入一条记录(不论是签到还是签退),都复制到另外一个ATT表中,这样所有的记录都在一起了。而且能完全按我想要的方式显示,就是不知道可不可行,有没有这个必要,我以前没用过触发器