荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: jsx (孤心累……觉), 信区: DotNET
标  题: [合集]一道不错的题目^_^
发信站: 荔园晨风BBS站 (2005年04月19日13:07:28 星期二), 站内信件

☆   1  ──────────── 我是分割线 ─────────────────☆
发信人: cococat (cococat), 信区: DotNET
标  题: 一道不错的题目^_^
时  间: 2005年04月16日14:09:12 星期六

给定以下两个表:
    部门ID   部门名称
      1         部门1
      2         部门2
      3         部门3
      4         部门4

  人员ID  人员姓名    部门ID
   1         姓名1     1
   2         姓名2     1
   3         姓名3     2
   4         姓名4      3
   5          姓名5    5
   6         姓名6     6

用一条SQL语句显示所有人员的姓名及所在部门,没有部门的用“未标志”代替。


☆   2  ──────────── 我是分割线 ─────────────────☆
发信人: jsx (孤心累……觉), 信区: DotNET
标  题: Re: 一道不错的题目^_^
时  间: 2005年04月16日16:49:27 星期六


 假设两表是同一个数据库中的两个表

 在第二个表中 输入SQL语句:

 select table2.人员名称 , table1.部门名称

 from table2 left join table1

 on table2.部门ID = table1.部门ID

 就ok了




☆   3  ──────────── 我是分割线 ─────────────────☆
发信人: cococat (cococat), 信区: DotNET
标  题: Re: 一道不错的题目^_^
时  间: 2005年04月16日16:56:11 星期六

??
看清楚题目没?
查出的结果是
人员姓名    部门名称
姓名1       部门1
    2           1
    3           2
    4           3
    5         未标志
    6         未标志
这样才对啊



☆   4  ──────────── 我是分割线 ─────────────────☆
发信人: jsx (孤心累……觉), 信区: DotNET
标  题: Re: 一道不错的题目^_^
时  间: 2005年04月16日17:14:07 星期六


 哦,还要那个“未标志”阿, 加个条件判断就不就行了

 如果table2.部门ID为空或者不再table1部门ID索引中,就table1.部门名称为

 ‘未标志’咯




☆   5  ──────────── 我是分割线 ─────────────────☆
发信人: cococat (cococat), 信区: DotNET
标  题: Re: 一道不错的题目^_^
时  间: 2005年04月16日17:17:20 星期六

怎搞?
查出的结果为以上的样子就对了



☆   6  ──────────── 我是分割线 ─────────────────☆
发信人: Pencil (红宝书就是我的圣经), 信区: DotNET
标  题: Re: 一道不错的题目^_^
时  间: 2005年04月16日17:20:37 星期六

设置一个部门名称就叫作“未设置”,把所有没有部门的人都归到“未设置”部门去不就
可以了。




☆   7  ──────────── 我是分割线 ─────────────────☆
发信人: jsx (孤心累……觉), 信区: DotNET
标  题: Re: 一道不错的题目^_^
时  间: 2005年04月16日17:30:07 星期六


 你按我写的在SQL企业管理器中试验一下就不就行了,然后加个判断咯




☆   8  ──────────── 我是分割线 ─────────────────☆
发信人: cococat (cococat), 信区: DotNET
标  题: Re: 一道不错的题目^_^
时  间: 2005年04月16日17:41:44 星期六

晕,人家的题目是叫你从那2个表中查询,你怎么可以自作主张修改表的内容呢?



☆   9  ──────────── 我是分割线 ─────────────────☆
发信人: jsx (孤心累……觉), 信区: DotNET
标  题: Re: 一道不错的题目^_^
时  间: 2005年04月16日17:43:46 星期六


 你那两张表如果是放在一个数据库里面的话,

 你就试试我上面写的,我也做过类似的,应该不会错,弱国

 有问题,你就查一下语法




☆  10  ──────────── 我是分割线 ─────────────────☆
发信人: jsx (孤心累……觉), 信区: DotNET
标  题: Re: 一道不错的题目^_^
时  间: 2005年04月16日17:46:42 星期六


 好把 我去查查语法,我宿舍这部机没有装SQL




☆  11  ──────────── 我是分割线 ─────────────────☆
发信人: cococat (cococat), 信区: DotNET
标  题: Re: 一道不错的题目^_^
时  间: 2005年04月16日17:47:29 星期六

贴出完整代码最实际,结果要如以上的样子
不能修改原表的内容,字段,不能创建临时表



☆  12  ──────────── 我是分割线 ─────────────────☆
发信人: tiny (tiny), 信区: DotNET
标  题: Re: 一道不错的题目^_^
时  间: 2005年04月16日19:03:23 星期六

SELECT Name AS username, deparmentname = CASE WHEN
          (SELECT COUNT(*)
         FROM department
         WHERE t1.departmentid = departmentid) <> 0 THEN
          (SELECT departmentname
         FROM department
         WHERE t1.departmentid = departmentid) ELSE '未标志' END
FROM [User] t1



☆  13  ──────────── 我是分割线 ─────────────────☆
发信人: cococat (cococat), 信区: DotNET
标  题: Re: 一道不错的题目^_^
时  间: 2005年04月16日20:12:47 星期六

对,就是这样啦^_^很多高手啊



☆  14  ──────────── 我是分割线 ─────────────────☆
发信人: cococat (cococat), 信区: DotNET
标  题: Re: 一道不错的题目^_^
时  间: 2005年04月16日20:21:56 星期六

这种方法还是不错的,斑竹很热心,支持~~



☆  15  ──────────── 我是分割线 ─────────────────☆
发信人: tiny (tiny), 信区: DotNET
标  题: Re: 一道不错的题目^_^
时  间: 2005年04月16日20:56:53 星期六

这个表关联只能查到两个表都存在的数据
但是对于人员表中不存在的部门无法查到



☆  16  ──────────── 我是分割线 ─────────────────☆
寄信人: jsx (孤心累……觉)
标  题: Re: 一道不错的题目^_^
时  间: 2005年04月16日20:58:32 星期六
来  源: 192.168.110.241

 恩,没错,这个方法只能查到给出部门ID




☆  17  ──────────── 我是分割线 ─────────────────☆
发信人: Kenniel (对酒当歌,人生几何!可惜我吾识饮酒), 信区: DotNET
标  题: Re: 一道不错的题目^_^
时  间: 2005年04月17日11:05:18 星期天

大老



☆  18  ──────────── 我是分割线 ─────────────────☆
发信人: tiny (tiny), 信区: DotNET
标  题: Re: 一道不错的题目^_^
时  间: 2005年04月17日11:06:55 星期天

ri

kaka


☆  19  ──────────── 我是分割线 ─────────────────☆
发信人: Kenniel (对酒当歌,人生几何!可惜我吾识饮酒), 信区: DotNET
标  题: Re: 一道不错的题目^_^
时  间: 2005年04月17日11:20:39 星期天

反ri
什么时候回来探大伙



☆  20  ──────────── 我是分割线 ─────────────────☆
发信人: tiny (tiny), 信区: DotNET
标  题: Re: 一道不错的题目^_^
时  间: 2005年04月17日11:45:23 星期天

不知道哦,这阵子比较忙

我想回去打球。。。。



☆  21  ──────────── 我是分割线 ─────────────────☆
发信人: jsx (孤心累……觉), 信区: DotNET
标  题: Re: 一道不错的题目^_^
时  间: 2005年04月17日13:04:13 星期天


 好啊,你连球都不用带了,用我的




☆  22  ──────────── 我是分割线 ─────────────────☆
发信人: xiaoming (xiaoming), 信区: DotNET
标  题: Re: 一道不错的题目^_^
时  间: 2005年04月17日22:39:57 星期天


SELECT 人员姓名,ISNULL(部门名称,未标志)

 FROM 人员 INNER JOIN 部门 ON 人员.部门ID = 部门.部门ID

大家只要知道isnull函数的用法就很简单的一个问题



☆  23  ──────────── 我是分割线 ─────────────────☆
发信人: tiny (tiny), 信区: DotNET
标  题: Re: 一道不错的题目^_^
时  间: 2005年04月18日10:27:17 星期一

select 不出来null的记录



[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店