当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

    摘要: 我想把数据从a、b数据库,导入c数据库,能否导数据库文件?(安全性很重要) 怎么导?能否有代码? ......
    摘要: 1。找到c:\winnt\microsoft.net\framework\v1.0.2914\ installsqlstate.sql 这个文件,装入 sql server 执行 产生一个aspstate数据库 2。修改 web.config ,大概象下面这样 <sessionstate mode="sqlserver" sqlconnectionstring=......


SQL查询问题,好难啊

现在要实现的是列出一个单位所有用户列表  
  如果没有排序功能的话只需要TbDeptUser一个表就可以了  
  (SELECT   *   FROM   TbDeptUser   WHERE   DeptId=?)  
  可是现在需要根据TbPosition表的OrdinalNum字段排序  
   
   
   
  需要用到三个表:  
  TbDeptUser     单位用户配置表     需要的子段:UserId   ,   DeptId  
  TbUser             用户表                     需要的子段:UserId   ,   PositionId  
  TbPosition     职位表                     需要的子段:PositionId   ,   DeptId   ,   OrdinalNum  
   
  TbDeptUser     单位用户配置表      
          DeptId可重复,因为一个单位有多个用户。  
   
  TbUser             用户表                      
          用户与职位一一对应。一个用户也可能没有职位,这时候PositionId值为-1  
   
  TbPosition     职位表                      
          DeptId可重复,因为一个单位有多个职位,OrdinalNum按DeptId分组。  
   
   
  这个问题在前面问过了,但是我忽略了一个很重要的问题  
   
  下面的SQL查询是没有考虑用户不存在职位的情况,其结果的排序是对的,但是缺少没有职位的用户纪录  
  SELECT   pd.UserId  
  FROM   TbDeptUser   pd,(   SELECT   u.UserId  
      FROM   TbUser   u,   TbPosition   p  
      WHERE   u.PositionId=p.PositionId  
      ORDER   BY   p.OrdinalNum   ASC)   pt  
  WHERE   pd.UserId=pt.UserId  
  AND   pd.DeptId=?  
   
  下面的SQL查询是考虑了用户不存在职位的情况,其结果的排序是错的,但是结果集个数是对的  
  SELECT   DISTINCT   pd.UserId  
  FROM   TbDeptUser   pd,(   SELECT   u.UserId  
      FROM   TbUser   u,   TbPosition   p  
      WHERE   u.PositionId=p.PositionId  
      OR   u.PositionId<0  
      ORDER   BY   p.OrdinalNum   ASC)   pt  
  WHERE   pd.UserId=pt.UserId  
  AND   pd.DeptId=?

NO.1   作者: Geranium

SELECT   DISTINCT   pd.UserId  
  FROM   TbDeptUser   pd,(   SELECT   u.UserId  
      FROM   TbUser   u,   TbPosition   p  
      WHERE   u.PositionId=p.PositionId  
      OR   u.PositionId=0  
      ORDER   BY   p.OrdinalNum   ASC)   pt  
  WHERE   pd.UserId=pt.UserId  
  AND   pd.DeptId=?  
   
   
   
  ???

NO.2   作者: Geranium

数据库里PositionId针对没有职位的人设一个数值不就行了?比如-1,这样就容易排序了,不用在WHERE时用OR判断了

NO.3   作者: blue999star

SELECT   DISTINCT   pd.UserId  
  FROM   TbDeptUser   pd,(    
      (SELECT   u.UserId  
      FROM   TbUser   u,   TbPosition   p  
      WHERE   u.PositionId=p.PositionId  
      ORDER   BY   p.OrdinalNum   ASC)  
        union  
      (SELECT   u.UserId  
      FROM   TbUser   u,   TbPosition   p  
      WHERE   u.PositionId<0)  
  )   pt  
  WHERE   pd.UserId=pt.UserId  
  AND   pd.DeptId=?  
   
  不知道可以不?不过效率可能降低了

NO.4   作者: langraser

你为什么不把排序拿到外面来做呢?看看这样行不行,错了不好意思啊,我也没时间细看:)  
  SELECT   DISTINCT   pd.UserId  
  FROM   TbDeptUser   pd,(   SELECT   u.UserId,p.OrdinalNum  
      FROM   TbUser   u,   TbPosition   p  
      WHERE   u.PositionId=p.PositionId  
      OR   u.PositionId<0)   pt  
  WHERE   pd.UserId=pt.UserId  
  AND   pd.DeptId=?  
  ORDER   BY   pt.OrdinalNum  
 

NO.5   作者: devilmoon_xp

up

NO.6   作者: jasongzgy

DRYDGDFG

NO.7   作者: cxyPioneer

up

NO.8   作者: mtou

select   Distinct   pd.UserID   from   TbDeptUser   pd    
  INNER   join   TbUSer   u   on   pd.UserId=u.UserId  
  INNER   join   TbPosition   p   on   u.PositionId=p.PositionId  
  where   u.PositionId<0  
      ORDER   BY   p.OrdinalNum   ASC

NO.9   作者: aku0708

up


    摘要: 比如生日 让提前一周自动提醒 如何解决? ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE