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 @t
select 1,'a' union all
select 2,'b' UNION ALL
SELECT 3,'c'
declare @m table (id int,col varchar(1))
insert into @m
select 1,'a' union all
select 2,'b'
select * from @t a left join @m b on a.id=b.id
/*
id col id col
----------- ---- ----------- ----
1 a 1 a
2 b 2 b
3 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 a
2 b 2 b
*/
--相当于内连接
select * from @t a ,@m b WHERE a.id=b.id
/*
----------- ---- ----------- ----
1 a 1 a
2 b 2 b
*/