2010-11-27 21 views
1

レンタルテーブル:MySQLのクエリの検索質問

CREATE TABLE RENTAL 
(
TransactionNo int NOT NULL AUTO_INCREMENT, 
MemberID int NOT NULL, 
ItemNo char(3) NOT NULL, 
RentalEmployeeID varchar(30), 
ReturnEmployeeID varchar(30), 
Checkout_date DATE, 
Checkin_date DATE, 
Return_date DATE, 
ItemQuantity int(11) NOT NULL, 
TotalPrice DOUBLE(10,2) NOT NULL, 
ItemFee DOUBLE(10,2), 
PRIMARY KEY(TransactionNo), 
FOREIGN KEY(MemberID) REFERENCES Member(MemberID), 
FOREIGN KEY(ItemNo) REFERENCES Item(Itemno), 
FOREIGN KEY(RENTALEMPLOYEEID) REFERENCES Employee(EmployeeID), 
FOREIGN KEY(RETURNEMPLOYEEID) REFERENCES Employee(EmployeeID) 
) 

私がチェックインさやジョー・スミスのために何かをチェックアウトしたいずれかのすべての人々は、しかし、私は小切手を取得またはチェックアウトすることができないだけで取得しようとしています両方ではありません。入れ子の節が必要ですか?

SELECT r.ItemNo, 
     i.Category, 
     i.Style, 
     i.Description, 
     r.`CheckIn_date`, 
     r.`Checkout_date`, 
     e.Fname, 
     e.Lname 
FROM MEMBER AS m, 
     ITEM AS i, 
     RENTAL AS r, 
     Employee e 
WHERE m.MemberID = r.MemberID 
AND  m.Fname = 'Joe’ 
AND  m.Lname=’Smith’ 
AND  r.ItemNo = i.ItemNo 
AND  r.RentalEmployeeID = e.EmployeeID 
+0

問い合わせは、私が言っている – Egalitarian

答えて

0

私は、チェックインとチェックアウトの両方を含むレコードは選択されていないと言います。クエリがそれを防ぐことについては何もありません。このような事態がデータに欠落していることが必要です。

+0

罰金です。私は4つの取引があります。 2回の返品と2回のレンタル。 1人の従業員が2つのアイテムをチェックアウトし、1人が2つのアイテムをチェックインしました。私はr.RentalEmployeeID = e.EmployeeIDまたはreturnemployeeによってr.ReturnEmployeeID = e.EmployeeIDによってレンタル従業員を取得することしかできません – user522032

0

次の2つに置き換えることもできますが、私は考えて合流...

SELECT r.ItemNo, 
     i.Category, 
     i.Style, 
     i.Description, 
     r.`CheckIn_date`, 
     r.`Checkout_date`, 
     e_rent.Fname, 
     e_rent.Lname, 
     e_rtn.Fname, 
     e_rtn.Lname 
FROM ITEM AS i, 
     RENTAL AS r, 
     Member m 
LEFT JOIN Employee e_rent ON (r.RentalEmployeeID = e_rent.ID) 
LEFT JOIN Employee e_rtn ON (r.RentalEmployeeID = e_rtn.ID) 
WHERE m.MemberID = r.MemberID 
AND  m.Fname = 'Joe’ 
AND  m.Lname=’Smith’ 
AND  r.ItemNo = i.ItemNo 
+0

私は助けに感謝します。 iTは、これらの2つの選択肢を使ってORステートメントを実行する必要があるようです – user522032