现在我使用C#编一个图书管理系统,后台数据库采用Oracle10g。数据库的各表简要如下:图书信息表:BookInfo
BookID
BookName --书名杂志信息表:MagazineInfo
MagaID
MagaName --杂志名用户信息表:UserInfo
UserID
UserName --用户名图书借阅纪录表:BookBorrowInfo
BookBorrowID
Borrow_BookID --所借的书的ID号
Borrow_UserID --借出用户的ID号
Borrow_Date --借出日期
Return_Date --归还日期杂志借阅记录表:MagaBorrowInfo
MagaBorrowID
Borrow_MagaID --所借的杂志的ID号
Borrow_UserID --借出用户的ID号
Borrow_Date --借出日期
Return_Date --归还日期现在我遇到一个比较复杂的多表查询的问题:就是我要查一个用户的所有借阅纪录(无论是借图书还是借杂志的),查询结果集只包含三个字段:所借的图书或杂志名,借出日期,归还日期。于是我写了一条查询语句(这里我指定用户id为1,表空间为intel)select BookName,MagaName,BookInfo.Borrow_Date,BookInfo.Return_Date,MagaBorrowInfo.Borrow_Date,MagaBorrowInfo.Return_Date from intel.BookInfo,intel.MagazineInfo,intel.BookBorrowInfo,intel.MagaBorrowInfo where (intel.BookInfo.BookID = intel.BookBorrowInfo.Borrow_BookID and
intel.BookInfo.Borrow_UserID=1) OR (intel.MagazineInfo.MagaID= intel.MagaBorrowInfo.Borrow_MagaID and
intel.MagaBorrowInfo.Borrow_UserID=1); 我把这个查询语句放在SQL*PLUS上运行,错误是:未选选定行。这个查询语句到底该怎么写呢?
BookID
BookName --书名杂志信息表:MagazineInfo
MagaID
MagaName --杂志名用户信息表:UserInfo
UserID
UserName --用户名图书借阅纪录表:BookBorrowInfo
BookBorrowID
Borrow_BookID --所借的书的ID号
Borrow_UserID --借出用户的ID号
Borrow_Date --借出日期
Return_Date --归还日期杂志借阅记录表:MagaBorrowInfo
MagaBorrowID
Borrow_MagaID --所借的杂志的ID号
Borrow_UserID --借出用户的ID号
Borrow_Date --借出日期
Return_Date --归还日期现在我遇到一个比较复杂的多表查询的问题:就是我要查一个用户的所有借阅纪录(无论是借图书还是借杂志的),查询结果集只包含三个字段:所借的图书或杂志名,借出日期,归还日期。于是我写了一条查询语句(这里我指定用户id为1,表空间为intel)select BookName,MagaName,BookInfo.Borrow_Date,BookInfo.Return_Date,MagaBorrowInfo.Borrow_Date,MagaBorrowInfo.Return_Date from intel.BookInfo,intel.MagazineInfo,intel.BookBorrowInfo,intel.MagaBorrowInfo where (intel.BookInfo.BookID = intel.BookBorrowInfo.Borrow_BookID and
intel.BookInfo.Borrow_UserID=1) OR (intel.MagazineInfo.MagaID= intel.MagaBorrowInfo.Borrow_MagaID and
intel.MagaBorrowInfo.Borrow_UserID=1); 我把这个查询语句放在SQL*PLUS上运行,错误是:未选选定行。这个查询语句到底该怎么写呢?
from MagazineInfo inner join MagaBorrowInfo on Borrow_MagaID=MagaID
where Borrow_UserID=1
union
select BookName,Borrow_Date,Return_Date
from BookBorrowInfo inner join BookBorrowInfo on Borrow_BookID=BookID
where Borrow_UserID=1
t2.MagaName,t2.Borrow_Date,t2.Return_Date
from intel.UserInfo a,
(select * from intel.BookBorrowInfo b,intel.BookInfo c
where b.Borrow_BookID=c.BookID) t1,
(select * from intel.MagaBorrowInfo d,intel.MagazineInfo e
where d.Borrow_magaID=e.MagaID ) t2
where a.UserId=t1.Borrow_UserID(+) and a.UserID=t2.Borrow_UserID(+)
去掉圖書和雜志者為空的記錄
from BookBorrowInfo b,UserInfo,BookInfo where userid=b.Borrow_UserID and BookID=b.Borrow_BookID
union
select MagaName v_name, a.Borrow_Date v_sdate,a.Return_Date v_rdate
from MagaBorrowInfo a,UserInfo,MagazineInfo where userid=a.Borrow_UserID and MagaID=Borrow_MagaID
from intel.BookInfo bi, intel.BookBorrowInfo bb
where bi.BookID = bb.Borrow_BookID
and bb.Borrow_UserID = 1
union
select 'Magazine', mi.BookName, mb.Borrow_Date, mb.Return_Date
from intel.MagazineInfo mi, intel.MagaBorrowInfo mb
where mi.BookID = mb.Borrow_BookID
and mb.Borrow_UserID = 1
杂志和书的借阅难道是一一对应的?要不怎么可以直接写在一个select中呢即使结果出来了也使有很多重复记录的!!
同意 malligator(十步之内没有我的爱人)
BookBorrowID
Borrow_BookID --所借的书的ID号
Borrow_UserID --借出用户的ID号 这个不是吗?
Borrow_Date --借出日期
Return_Date --归还日期杂志借阅记录表:MagaBorrowInfo
MagaBorrowID
Borrow_MagaID --所借的杂志的ID号
Borrow_UserID --借出用户的ID号 这个不是吗?
Borrow_Date --借出日期
Return_Date --归还日期