日期:2014-05-18  浏览次数:20419 次

關於多表查詢的問題 (隻有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