2017-06-12 22 views
1

私は会員に配送された購入した書籍のリストを表示しようとしています。リストには、会員識別番号、名字、住所、連絡先番号、書籍のシリアル番号、書籍のタイトル、数量、納品日が表示されます。SQLクエリINNER JOIN 4テーブル

私のテーブルは、どのような私がこれまで試したが、運

CREATE TABLE Members 
      (
       MemberID nvarchar(50) NOT NULL PRIMARY KEY, 
       MemberName nvarchar(50) NOT NULL, 
       MemberAddress nvarchar(50), 
       MemberContact int, 
       MemberAge int, 
       RegistrationDate nvarchar(50) 
      ); 


      --Inserting Values into Members' Table-- 
      INSERT INTO Members(MemberID, MemberName, MemberAddress, MemberContact, MemberAge,RegistrationDate) 
      VALUES ('MEM01', 'Muhammed Abdul', 'Damansara','01121565987', '34', '20/02/2017'); 

     CREATE TABLE Book 
     ( 
      BookID nvarchar(50) NOT NULL PRIMARY KEY, 
      BookName nvarchar(50) NOT NULL, 
      BookCategory nvarchar(50), 
      BookPrice1 nvarchar(50), 
      Author nvarchar(50), 
      PublisherID nvarchar(50) NOT NULL FOREIGN KEY REFERENCES Publisher(PublisherID) 

     ); 
     --Inserting Values into Book Table-- 
     INSERT INTO Book(BookID, BookName, BookCategory, BookPrice1, Author, PublisherID) 
     VALUES ('B01', 'Harry Potter', 'Fantasy','70', 'Rowling J.K','PB01'); 

     CREATE TABLE Orders_Bookstore 
     (
      OrderID nvarchar(50) NOT NULL PRIMARY KEY, 
      BookID nvarchar(50) NOT NULL FOREIGN KEY REFERENCES Book(BookID), 
      OrderDate nvarchar(50), 
      OrderQuantity int, 
      OrderTotal int, 
      MemberID nvarchar(50) NOT NULL FOREIGN KEY REFERENCES Members(MemberID), 
     ); 
     --Inserting Values into Boookstore Orders table-- 
     INSERT INTO Orders_Bookstore(OrderID, BookID, OrderDate, OrderQuantity, OrderTotal, MemberID) 
     VALUES ('ORD1','B01', '04/06/2017', '3' ,'210', 'MEM01'); 

     CREATE TABLE Receipt 
     (
      ReceiptID nvarchar(50) NOT NULL PRIMARY KEY, 
      CartNum nvarchar(50) FOREIGN KEY REFERENCES ShoppingCart(CartNum), 
      DateOfDelivery nvarchar(50), 
      DeliveryStatus nvarchar(50), 
      MemberID nvarchar(50) FOREIGN KEY REFERENCES Members(MemberID) 
     ); 

     --Inserting Values INTO Receipt table-- 
     INSERT INTO Receipt(ReceiptID, CartNum, DateOfDelivery,DeliveryStatus) 
     VALUES ('REC1', 'CART1', '08/15/2017', 'Delivered');` 

以下である:

SELECT MemberID, MemberName, MemberAddress, MemberContact, BookID, BookName, 
    OrderQuantity, DeliveryStatus, DateOfDelivery FROM Members 
    INNER JOIN Orders_Bookstore ON Members.MemberID=Orders_Bookstore.MemberID 
    INNER JOIN Members ON Orders_Bookstore.MemberID=Members.MemberID 
    INNER JOIN Book ON Orders_Bookstore.BookID=Book.BookID 
    INNER JOIN Receipt ON Receipt.MemberID=Members.MemberID 

すべてのヘルプは

+1

質問にはどのような問題がありますか? – Jens

+0

@ Jens Msg 1013、レベル16、状態1、行17 FROM句のオブジェクト「Members」と「Members」は、公開されている同じ名前を持ちます。相関名を使用してそれらを区別します。 –

+1

INNER JOINをメンバーに削除するのは、これが基本テーブルであるためです。 –

答えて

1

ことは、これを試してみてください。

+0

動作しますが何も表示されません。全くデータがありません –

+0

@JamesKaider Receipt.MemberIDがnullであるためです。 'MEM01'で更新してください –

+0

メンバーに納品された注文を表示する必要がありますので、私はどこでReceipt.DeliveryStatus = 'Delivered'を使用するべきではありませんか? –

0

をいただければ幸い4台が参加していないこと3内部結合が必要です。 4を使用しています。これは、テーブルを2度使用することを意味します。試してみてください:

SELECT 
m.MemberID, m.MemberName, m.MemberAddress, m.MemberContact, 
b.BookID, b.BookName, 
ob.OrderQuantity, 
r.DeliveryStatus, r.DateOfDelivery 
    FROM Members m 
    INNER JOIN Orders_Bookstore ob ON m.MemberID=ob.MemberID 
    INNER JOIN Book b ON ob.BookID=b.BookID 
    INNER JOIN Receipt r ON r.MemberID=m.MemberID 

親切にすべての日付の日付形式を使用します。

SELECT MemberID 
    ,MemberName 
    ,MemberAddress 
    ,MemberContact 
    ,Book.BookID 
    ,BookName 
    ,OrderQuantity 
    ,DeliveryStatus 
    ,DateOfDelivery 
FROM Members m1 
INNER JOIN Orders_Bookstore ON m1.MemberID = Orders_Bookstore.MemberID 
INNER JOIN Book ON Orders_Bookstore.BookID = Book.BookID 
INNER JOIN Receipt ON Receipt.MemberID = m1.MemberID 
+0

メッセージ209、レベル16、状態1、行17 「MemberID」というあいまいな列名。 メッセージ209、レベル16、状態1、行17 あいまいな列名 'BookID'。 エラー –

+0

@JamesKaider編集済み – apomene

+1

メンバーに納品された注文を表示する必要がありますので、私はどこで使ってはいけませんか?Receipt.DeliveryStatus = '納品済み'? –