有三张表,图书表,用户表,和借阅表,当用户“张三”借了一本“水浒传”之后,在借阅表显示用户和所借阅的图书,然后对应图书表中的图书数量减少一本。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如何对用户所借的图书数量做更改,张三归还图书了又该怎么写呢?
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如何对用户所借的图书数量做更改,张三归还图书了又该怎么写呢?
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
能不能减去Books表的bookNum对应数量,水浒传 4本借走后是3本,这样
借阅表增加两个字段:1标记。0表示借出,1表示还入。2借阅/还入数量。因为借阅不一定只能1本。
这样基本能满足你的要求了。
/* 新加库存表 */
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
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
其实楼主还应该想到有几张表, 拿去试试