这个SQL查询语句如何写(具体请看本内容)(50分)

  • 主题发起人 主题发起人 wz_hzb
  • 开始时间 开始时间
W

wz_hzb

Unregistered / Unconfirmed
GUEST, unregistred user!
表worker.db

name age department_no

张三 23 001
李四 24 002
王五 51 null
黄刚 30 001
孙小明 25 003
叶大能 30 005

表department.db

department_name department_no

财务部 001
工程部 002
办公室 003

用SQL查询后得到结果为:

name age department_name

张三 23 财务部
李四 24 工程部
王五 51 " "
黄刚 30 财务部
孙小明 25 办公室
叶大能 30 " "

注:" " 表示为空。

SQL如语句何写?谢谢!
 
select worker.name,worker.age,department.department_name from worker,department
where (worker.department_no = department.department_no)
or worker.department_no = null
 
分成多次写吧,再把每次查询的结果先保存到一个临时的表里面,最后在打开。。。。。。。
 
用一句sql是无法完成这个功能的。
 
R_Baggio你的方法肯定不行,不信你试一试。
 
我用以下代码试过,也不行,连语法也通不过:
select worker.name,worker.age,department.department_name from worker,department
where (worker.department_no = department.department_no)
union
select worker select worker.name,worker.age,department.department_name from worker,department
where (worker.department_no not in (select department.department_no from department.db))
至于ArJianzeng方法,能不能说详细点,谢谢!
 
select worker.name,worker.no,department.department_name from worker left outer join department on worker.department_no=department.department_no
也就是采用所谓的外连
 
不完全符合您的要求(排序不对):

select a.Name,a.Age,b.DepartMent_name
from worker a,department b
where a.DepartMent_no=b.DepartMent_no
union
select a.Name,a.Age,null
from worker a,department b
where a.DepartMent_no not in
(select DepartMent_no from department)
or a.DepartMent_no is null
=========================================
结果:
Name Age DepartMent_name
---------- ---- ---------------
王五 51 NULL
叶大能 30 NULL
孙小明 25 财务部
李四 24 工程部
张三 23 财务部
黄刚 30 财务部

(6 row(s) affected)
 
多人接受答案了。
 
>>fastest2000
刚才试了一下您的外挂法,确实不错。
看来我这 20 分是捡的。
 
后退
顶部