借出表
商品编号 姓名 日期 备注 借出编号
111 A 2010-12-29 L000001
111 B 2010-12-31 L000002归还表
商品编号 姓名 日期 备注 借出编号
111 A 2010-12-30 R000001基本信息表
商品编号 商品描述 入库日期 备注
1 1 2010-10-10
111 111 2010-10-10
现在我想通过sql查询出借出信息
应该显示:
商品编号 商品描述 入库日期 备注 姓名 日期 备注2
1 1 2010-10-10 A 2010-12-29sql语句应该如何写,谢谢高手。即借出表-归还表,再向左连接基本信息表。
借出与归还这里我觉得最难。
商品编号 姓名 日期 备注 借出编号
111 A 2010-12-29 L000001
111 B 2010-12-31 L000002归还表
商品编号 姓名 日期 备注 借出编号
111 A 2010-12-30 R000001基本信息表
商品编号 商品描述 入库日期 备注
1 1 2010-10-10
111 111 2010-10-10
现在我想通过sql查询出借出信息
应该显示:
商品编号 商品描述 入库日期 备注 姓名 日期 备注2
1 1 2010-10-10 A 2010-12-29sql语句应该如何写,谢谢高手。即借出表-归还表,再向左连接基本信息表。
借出与归还这里我觉得最难。
from 基本信息表 m , 借出表 n
where m.商品编号 = n.商品编号
我的目的就是同一个商品A借出A又归还,B又借出,但是查出的结果就是最后借出的结果是B借出的信息。谢谢
商品编号 商品描述 入库日期 备注 姓名 日期 备注2
1 1 2010-10-10 B 2010-12-31
from 基本信息表 m, 借出表 n
where m.商品编号 = n.商品编号 and n.日期 = (select max(日期) from 借出表 where 商品编号 = n.商品编号)select m.* , n.日期 , n.备注 备注2
from 基本信息表 m, 借出表 n
where m.商品编号 = n.商品编号 and not exists (select 1 from 借出表 where 商品编号 = n.商品编号 and 日期 > n.日期)
商品编号 姓名 日期 备注 借出编号
111 A 2010-12-29 L000001
111 B 2010-12-31 L000002归还表
商品编号 姓名 日期 备注 借出编号
111 A 2010-12-30 L000001基本信息表
商品编号 商品描述 入库日期 备注
1 1 2010-10-10
111 111 2010-10-10
现在我想通过sql查询出借出信息
应该显示:
商品编号 商品描述 入库日期 备注 姓名 日期 备注2
1 1 2010-10-10 B 2010-12-29
FROM 基本信息表 A
LEFT JOIN
(
SELECT Order = 1, * FROM 借出表
UNION ALL
SELECT Order = 2, * FROM 归还表
) B
ON A.商品编号 = B.商品编号
ORDER BY B.日期, B.借出编号, B.Order
create table [jc]( [Gcode] int,[name] varchar(10),[time] datetime,[re] varchar(50),[Jcode] varchar(20))insert [jc]
select 111, 'A', '2010-12-29','', 'L000001' union all
select 111, 'B', '2010-12-31','', 'L000002'
if object_id('gh]') is not null drop table [gh]
create table [gh]( [Gcode] int,[name] varchar(10),[time] datetime,[re] varchar(50),[Hcode] varchar(20))insert [gh]
select 111, 'A', '2010-12-30','', 'L000001'
if object_id('xx]') is not null drop table [xx]
create table [xx]( [Gcode] int,[descrip] varchar(120),[time] datetime,[re] varchar(50))insert [xx]
select 1, '1', '2010-10-10','' union all
select 111, '111', '2010-10-10',''
select m.* , n.[name], n.[time] , n.re
from xx m, jc n
where m.Gcode = n.Gcode and n.[time] = (select max([time]) from jc where Gcode = n.Gcode)