有三张表,图书表,用户表,和借阅表,当用户“张三”借了一本“水浒传”之后,在借阅表显示用户和所借阅的图书,然后对应图书表中的图书数量减少一本。declare @Books table(bookId int,bookName nvarchar(10),bookNum int)
insert into @Books select 1,'水浒传',4 union all
select 2,'红楼梦',6 union all
select 3,'西游记',2 union all
select 4,'三国演义',4
declare @Readers table(readerId int,readerName nvarchar(10))
insert into @Readers
select 1,'张三' union all
select 2,'李四'
declare @Borrows table(readerId int,bookId int)insert into @Borrows select 1,1--用户张三借图书水浒传select r.readerName as 读者姓名, bk.bookName as 图书名称 from @Borrows b
left join @Readers r
on b.readerId=r.readerId
inner join @Books bk
on b.bookId=bk.bookId如何对用户所借的图书数量做更改,张三归还图书了又该怎么写呢?

解决方案 »

  1.   

    如何对用户所借的图书数量做更改,张三归还图书了又该怎么写呢?--借的數量 SELECT 
    r.readerId,r.readerName,COUNT(b.readerId) AS Qty
    FROM @Readers AS r
    LEFT JOIN @Borrows AS b ON r.readerId=b.readerId
    GROUP BY r.readerId,r.readerName
      

  2.   


    能不能减去Books表的bookNum对应数量,水浒传 4本借走后是3本,这样
      

  3.   

    图书表增加一个字段:当前数量。借出就-,还入就+。原来的bookNum字段存放该书总数量。
    借阅表增加两个字段:1标记。0表示借出,1表示还入。2借阅/还入数量。因为借阅不一定只能1本。
    这样基本能满足你的要求了。
      

  4.   


    /* 新加库存表 */
    create table Numbers(bookId int,bookNum int)
    insert into Numbers values(1,6)
    insert into Numbers values(2,4)
    insert into Numbers values(3,6)
    insert into Numbers values(4,4)/* 触发器怎么写?我真是想破脑子了。 */
    create trigger ModifyBorrow
    on Borrows
    for insert
    as
    begin
    update Numbers set bookNum=bookNum-1
    from Numbers n
    inner join Books bk
    on bk.bookId=n.bookId
    inner join 
    where bk.bookName='三国演义'
    end
      

  5.   

    use tempdb
    gocreate table Books(bookId int,bookName nvarchar(10),bookNum int)
    insert into Books select 1,'水浒传',4 union all
    select 2,'红楼梦',6 union all
    select 3,'西游记',2 union all
    select 4,'三国演义',4
    create table Readers(readerId int,readerName nvarchar(10))
    insert into Readers
    select 1,'张三' union all
    select 2,'李四'
    create table Borrows(readerId int,bookId int)
    go------1.对借阅数量做修改
    create trigger T_After_Borrowed
    on Borrows
    after insert
    as
    --i.bookid
     declare @bookid int
     set @bookid=(select top 1 bookId from inserted)
       if (select bookNum from Books where Books.bookId=@bookid)>0
     update Books
     set bookNum=bookNum-1
     where bookId=@bookid
      
    go
    insert into Borrows select 1,1--用户张三借图书水浒传select r.readerName as 读者姓名, bk.bookName as 图书名称 from Borrows b
    left join Readers r
    on b.readerId=r.readerId
    inner join Books bk
    on b.bookId=bk.bookId
    goselect *
    from Books
    其实楼主还应该想到有几张表, 拿去试试