读书人

於多表查的 (有10分了)解决

发布时间: 2012-01-12 22:11:58 作者: rapoo

於多表查的 (有10分了)
A表 (表)
日期
IN001 2005.6.7
IN002 2005.6.8
IN003 2005.6.9
....

B表 (存表)
品 量
IN001 abcd 200
IN002 deff 2001
IN003 aasss 240
...

C表 (品名表)
品 品名 ..
abcd DY001 ...
deff DY002 ...
aass DY003 ...

怎在用入如 品= 'abcd ' and 日期= '2005.6.7 ' ,列出如下料

品 品名 量 日期
abcd DY001 200 2005.6.7
...

也就是三表交叉查合,有10分,真求教,

[解决办法]
create table A( varchar(10), 日期 datetime)
insert A select 'IN001 ', '2005-6-7 '
union all select 'IN002 ', '2005-6-8 '
union all select 'IN003 ', '2005-6-9 '
go
create table B( varchar(10), 品 varchar(10), 量 int)
insert B select 'IN001 ', 'abcd ', 200
union all select 'IN002 ', 'deff ', 2001
union all select 'IN003 ', 'aasss ', 240
go
create table C(品 varchar(10), 品名 varchar(10))
insert C select 'abcd ', 'DY001 '
union all select 'deff ', 'DY002 '
union all select 'aasss ', 'DY003 '
go

select C.*, B.量, A.日期 from B
left join A on B.=A.
left join C on B.品=C.品
where C.品= 'abcd ' and datediff(day, A.日期, '2005-6-7 ')=0

--result
品 品名 量 日期
---------- ---------- ----------- ------------------------------------------------------
abcd DY001 200 2005-06-07 00:00:00.000

(1 row(s) affected)

[解决办法]
ding

读书人网 >SQL Server

热点推荐