2013-05-09 63 views
-1

使用以下關係:關係代數和SQL解決

consultant(id,Name,Skill) 

CustomerCompany(Id,name Address, Phone, Email, WebAddr,Market) 

project(id,StartDate,EndDate,ConsultantID,CustomerId,Days) 

Invoice(id,Date,Customer,Amount,Status) 

我試着使用SQL和關係代數

查找顧問的姓名制定出以下情形和客戶的名字,其中顧問公司合作爲客戶,而客戶收到的10萬英鎊的範圍內的發票20萬

使用SQL我有:

從CustomerCompany中選擇I.amount,C.name,發票I其中 I.Customer = C.id和> all(從CustomerCompany選擇C.name,Con.Name,Con Consultant其中i.amount 介於100和200);

關係代數:

amount = σ(Invoice, amount>=100 and amount<=200) 

joininv= Ⓧ(amount, Customer, CustomerCompany, id) 

joincon Ⓧ(joiniv, Consultant id, Project, ConsultantID) 

π =(joincon, name, Name) 

我在想,如果寫或錯了嗎?

感謝您的幫助!

+2

幾乎沒有人的學術/科研使用或有精通關係代數(近30年,因爲我已經用它)外面。你可能會在http://cs.stackexchange.com得到更好的迴應 – RBarryYoung 2013-05-09 16:21:57

回答

0

這將這樣的伎倆

select 
con.Name 
from CustomerCompany CustComp 
inner join project PRO on PRO.CustomerId=CustComp.Id 
inner join consultant con on con.id=PRO.ConsultantID 
inner join Invoice Inv on Inv.Customer=CustComp.name 
where Inv.Amount between 100 and 200 

JOIN