借出表
商品编号  姓名    日期       备注   借出编号
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语句应该如何写,谢谢高手。即借出表-归还表,再向左连接基本信息表。
借出与归还这里我觉得最难。

解决方案 »

  1.   

    select m.* , n.姓名 ,n.日期 , n.备注 备注2 
    from 基本信息表 m , 借出表 n
    where m.商品编号 = n.商品编号
      

  2.   

    不好意思我上面写错了
    我的目的就是同一个商品A借出A又归还,B又借出,但是查出的结果就是最后借出的结果是B借出的信息。谢谢
    商品编号 商品描述 入库日期 备注 姓名 日期       备注2
    1        1     2010-10-10    B  2010-12-31
      

  3.   

    select m.* , n.日期 , n.备注 备注2 
    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.日期)
      

  4.   

    楼主 你的问题是不是应该是这样的啊借出表
    商品编号 姓名 日期 备注 借出编号
    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
      

  5.   

    SELECT A.商品编号,A.商品描述,A.入库日期,A.备注, B.姓名, B.日期, B.备注2
    FROM 基本信息表 A
    LEFT JOIN
    (
    SELECT Order = 1, * FROM 借出表
    UNION ALL
    SELECT Order = 2, * FROM 归还表
    ) B
    ON A.商品编号 = B.商品编号
    ORDER BY B.日期, B.借出编号, B.Order
      

  6.   

    if object_id('[jc]') is not null drop table [jc]
    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)