当前位置: 代码迷 >> Sql Server >> sql2000 多表查询,该如何处理
  详细解决方案

sql2000 多表查询,该如何处理

热度:57   发布时间:2016-04-27 13:59:31.0
sql2000 多表查询
刚学到sql的select语 sql提供了多表查询的功能 是用join。。。on。。。实现的 
但我自己试了一下 不用join。。。on。。。 也可以在多个表中查询出想要的结果啊 
我想知道用普通的 select。。from。。。where。。。和select。。。from。。join。。on。。。这样 有什么不同

------解决方案--------------------
/*
包括部门,姓名,出勤天数,迟到次数,早退次数,矿工次数 这些数据
*/

go
if OBJECT_ID('dept') is not null
drop table dept
go
create table dept(
deptid varchar(5),
deptname varchar(20)
)

go
if OBJECT_ID('emp') is not null
drop table emp
go
create table emp(
empid varchar(10),
empname varchar(20),
empsex varchar(5) check(empsex in('men','women')),
empage int,
birthday datetime,
addr varchar(50),
tel varchar(12),
deptid varchar(5)
)

go
if OBJECT_ID('kaoqin') is not null
drop table kaoqin
go
create table kaoqin(
empid varchar(10),
deptid varchar(5),
出勤天数 int,
迟到次数 int,
早退次数 int,
矿工次数 int
)
--包括部门,姓名,出勤天数,迟到次数,早退次数,矿工次数
select 
dept.deptname as 部门,emp.empname as 姓名,
出勤天数,迟到次数,早退次数,矿工次数
from emp
inner join dept on emp.deptid=dept.deptid
inner join kaoqin on emp.empid=kaoqin.empid

/*
包括部门 姓名 出勤天数 迟到次数 早退次数 矿工次数
*/

------解决方案--------------------
SQL code
declare @t table (id int,col varchar(1))insert into @tselect 1,'a' union allselect 2,'b' UNION ALLSELECT 3,'c'declare @m table (id int,col varchar(1))insert into @mselect 1,'a' union allselect 2,'b'select * from @t a left join @m b on a.id=b.id/*id          col  id          col----------- ---- ----------- ----1           a    1           a2           b    2           b3           c    NULL        NULL*/select * from @t a left join @m b on 1=1  WHERE a.id=b.id/*id          col  id          col----------- ---- ----------- ----1           a    1           a2           b    2           b*/--相当于内连接select * from @t a ,@m b WHERE a.id=b.id/*----------- ---- ----------- ----1           a    1           a2           b    2           b*/
  相关解决方案