有2张表,一张person_info 记录 省市  教师  创建人 修改人 创建时间 修改时间
另一张user_zhongxin 记录 用户  中心现在要查询  省市 中心  用户  创建信息个数  修改信息个数对于一条记录来说,新建的时候创建时间=修改时间,修改后,修改时间>新建时间,创建人和修改人可以是不同的人.请问我要如何写sql语句呢?下面是建表的语句
CREATE TABLE PERSON_INFO  (
          PERSON_ID INTEGER NOT NULL ,          
          PERSON_NAME VARCHAR(30) NOT NULL ,
          CREATE_NAME VARCHAR(30) NOT NULL ,  
          CREATE_TIME DATE NOT NULL , 
          MODIFY_NAME  VARCHAR(30) NOT NULL ,  
          MODIFY_TIME DATE NOT NULL ,
          PROVINCE_NAME VARCHAR2(20)
 ); 
         
ALTER TABLE  PERSON_INFO 
    ADD PRIMARY KEY
        (PERSON_ID);
        
INSERT INTO PERSON_INFO VALUES(1,'pa','人员a',to_date('2010-04-01','yyyy-mm-dd'),'a',to_date('2010-04-01','yyyy-mm-dd'),'河北');
INSERT INTO PERSON_INFO VALUES(2,'pb','人员b',to_date('2010-04-01','yyyy-mm-dd'),'a',to_date('2010-04-03','yyyy-mm-dd'),'北京');
INSERT INTO PERSON_INFO VALUES(3,'pc','人员c',to_date('2010-04-01','yyyy-mm-dd'),'a',to_date('2010-04-05','yyyy-mm-dd'),'河南');
INSERT INTO PERSON_INFO VALUES(4,'pd','人员d',to_date('2010-04-01','yyyy-mm-dd'),'a',to_date('2010-04-07','yyyy-mm-dd'),'山西');
INSERT INTO PERSON_INFO VALUES(5,'pe','人员e',to_date('2010-04-01','yyyy-mm-dd'),'a',to_date('2010-04-09','yyyy-mm-dd'),'辽宁');
        
CREATE TABLE USER_INFO  (
          U_ID INTEGER NOT NULL ,          
          U_NAME VARCHAR(30) NOT NULL ,  
          U_MAIN_NAME  VARCHAR(30) NOT NULL );
 ALTER TABLE USER_INFO 
    ADD PRIMARY KEY
        (U_ID); INSERT INTO USER_INFO VALUES(1,'用户a','理工中心');
INSERT INTO USER_INFO VALUES(2,'用户b','中职中心');
INSERT INTO USER_INFO VALUES(3,'用户c','教研中心');
INSERT INTO USER_INFO VALUES(4,'用户d','理工中心');

解决方案 »

  1.   

    错了.
    用户表插入数据INSERT INTO USER_INFO VALUES(1,'人员a','理工中心');
    INSERT INTO USER_INFO VALUES(2,'人员b','中职中心');
    INSERT INTO USER_INFO VALUES(3,'人员c','教研中心');
    INSERT INTO USER_INFO VALUES(4,'人员d','理工中心');
      

  2.   

    两张表怎么关联?
    PERSON_ID=U_ID?
      

  3.   

    其实你要的
    创建信息个数:
    select a.create_name,count(*) create_count from PERSON_INFO a,USER_INFO b where a.create_name=b.u_name group by a.create_name;
    修改信息个数:
    select a.modify_name,count(*) modify_count from PERSON_INFO a,USER_INFO b where a.modify_time>a.create_time and a.modify_name=b.u_name group by a.modify_name;但是你提供的修改人员在USER_INFO会有不存在的情况。
      

  4.   

    因为教师信息是属于某个省的,所以就把这个字段设计到信息表里了
    我可以获得各个数量.
    我现在是这么做的:先获取创建个数,再获取修改个数,然后2个左连接,右链接.因为我发现oracle的full join貌似有bug
    然后再联合user_zhongxin表将中心对应上,最后用rollup函数统计
      

  5.   

    上面的2个查询,使用其作为表再查询出你要的字段信息,比如省市、中心就可以了。
    如果修改人不在USER_INFO,也要统计到,第二个查询就要改成:
    select a.modify_name,count(*) modify_count from PERSON_INFO a where a.modify_time>a.create_time  group by a.modify_name;总之你要的结果就是使用子查询作为一个临时表来解决,但是还是觉得你们的表结构设计的不合理,怎么用名字作为关联的
      

  6.   

    用id也一样
    但是用id最后还是要联合一下查出名称,我担心速度会更慢
    名字在系统里也是唯一的
      

  7.   

    把你的期望记录也列出来, 另外username  和 personname 都教用户吗? 说清楚
     有点眩晕。。