電子書籍の厳選無料作品が豊富!

Access2007のSQLで質問です。「ユーザが選んだレンタカー営業所に所属する車と、その借主、レンタル日、レンタル期間」を一覧で表示するクエリーを制作しています。
テーブル

■Customer
-CustomerID(主キー)
-FirstName
-LastName

■Book
-FK_CustomerID(複合キー)
-FK_CarNo(複合キー)
-Date
-Duration

■Car
-CarNo(主キー)
-Model

■Own
-FK_CarNo(複合キー)
-FK_LocationNo(複合キー)

■Location
-LocationNo(主キー)
-LocationName

-------------------------------------------------------------------

LocationNameの中から指定したLocationが保有するCarのBookすべてを表示するクエリーを作りたいです。

クエリーが生成するアウトプットは、CarNo, Model, FirstName, LastName, Date, Duration, です。

以下のSQLを作ってみましたが、"syntax error missing operator.."と表示されてしまいます。


SELECT c.CarNo, c.Model, cs.FirstName, cs.LastName, b.Date, b.Duration
FROM Location l INNER JOIN ( ( (Own o INNER JOIN Car c ON o..FK_CarNo = c.CarNo l.LocationNo) INNER JOIN Book b ON c.CarNo = b.FK_CarNo) INNER JOIN Customer cs ON b.FK_CustomerID = cs.CustomerID) ON l.LocationNo = o.FK_LocationNo
WHERE l.LocationName =:user_input ;

A 回答 (2件)

この場合、INNER JOINの後を()でくくる必要はないのだが。


それはさておき、

SELECT c.CarNo, c.Model, cs.FirstName, cs.LastName, b.Date, b.Duration
FROM Location l
INNER JOIN ( ( (Own o INNER JOIN Car c ON o..FK_CarNo = c.CarNo l.LocationNo)
/* o..FK_CarNo は、 o.FK_CarNo のあやまりでしょう。 また
c.CarNoの後にあるl.LocationNoは何のためのものか分らないので文法エラーになります。 */
INNER JOIN Book b ON c.CarNo = b.FK_CarNo) INNER JOIN Customer cs ON b.FK_CustomerID = cs.CustomerID) ON l.LocationNo = o.FK_LocationNo
WHERE l.LocationName =:user_input ;

ANO.1の方が書いた方法で悪いとは思わないのですが、ご自身で書かれたselect文を試してみたければ
/* ・・・ */内に書かれた内容を直した下のselectを試して見られたらいいでしょう。

SELECT c.CarNo, c.Model, cs.FirstName, cs.LastName, b.Date, b.Duration
FROM Location l INNER JOIN ( ( (Own o INNER JOIN Car c ON o.FK_CarNo = c.CarNo) INNER JOIN Book b ON c.CarNo = b.FK_CarNo) INNER JOIN Customer cs ON b.FK_CustomerID = cs.CustomerID) ON l.LocationNo = o.FK_LocationNo
WHERE l.LocationName =:user_input ;
    • good
    • 0
この回答へのお礼

ありがとうございます。
参考になりました。

お礼日時:2012/10/29 06:23

こう?

「Access2007で、5つのテーブルを」の回答画像1
    • good
    • 0
この回答へのお礼

ありがとうございます。
参考になりました。

お礼日時:2012/10/29 04:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!