2017-06-09 8 views
-1

複数の書籍と注文の詳細を表示するデータベース内の複数のテーブルから情報を選択しようとしています。 enter image description hereSQLクエリで複数のテーブルを結合する

私はその本を置いてきた受注のための書籍や情報についての情報を取得するために、特定の書籍の5つのテーブル(著者、bookauthor、書籍、オーダーライン、およびbookorder)にISBNを照会しています。

私に与え
SELECT orderline.isbn, title, ordernumber, orderdate, customername, numcopies, orderline.bookprice, authorname 
    FROM author natural join bookauthor natural join book join orderline natural join bookorder 
     WHERE orderline.isbn = book.isbn 
     and book.isbn = "1491936169" 

enter image description here

ISBN: 1491936169 Title: Kafka: The Definitive Guide: Real-Time Data and Stream Processing at Scale 
        Author: Neha Narkhede, Todd Palino, Gwen Shapira 
Order Number Date  Customer    Copies Price  Total 
N201699998 2016-12-24 Mary Hall     2 33.99  67.98 
N201799999 2017-01-03 Aran Clauson    1 33.99  33.99 
Total:  

をしかし命じられていないと表示され、これオーダーラインのテーブルに存在しないが、本表であるしているいくつかのISBNコードがありますすべての本のためのisbn。

ISBN: 0387848576 Title: The Elements of Statistical Learning 
        Author: Jerome Friedman, Trevor Hastie, Robert Tibshirani 
No orders 

は基本的に私はいないがあるISBNとnull値のための書籍情報を表示するテーブルが欲しい:

は、私は同様のような注文を持たない書籍の書籍情報を表示します注文。私はこれが何らかの自然な外部結合であると想像していますが、私の試みは空のテーブルになりました。

SELECT ordernumber, orderdate, customername, orderline.isbn, title, orderline.numcopies, stock, shipmentbook.numcopies as shipcopies, authorname 
FROM author natural join bookauthor natural join book left join bookorder natural join orderline 
       ON book.isbn = orderline.isbn 
       left join mousavs.shipmentbook 
       ON book.isbn = shipmentbook.isbn 
       WHERE stock > orderline.numcopies 
       GROUP BY ordernumber 
       ORDER BY orderdate, ordernumber, ISBN 

エラーコードによりグループを使用して重複を削除しようとする

更新クエリ :SELECTリストの1055式#4は、GROUP BY句ではなく、ある非凝集列「mousavs.orderline.isbn」を含みますGROUP BY句の列に機能的に依存しない

+2

'選択....本からは、<あなたのテーブルの残りの部分を>参加左...' [W3学校](https://www.w3schools.com/sql/trysql.asp?filename= trysql_select_join_left) – scsimon

+0

@scsimonは私の先行するwhere節にsynaxエラー(予期しないところ)を与えてくれます。 – Silverfin

+1

私はあなたの最後のコメントが何を意味するのか分かりませんが、私はほとんど独占的に自然な参加を避けるでしょう。 – scsimon

答えて

1

左に結合する101 ...本当に....あなたがRDMSで作業する予定がある場合は、本当に結合を読み上げる必要があります。

select 
    b.isbn 
    ,b.title 
    ,b.bookprice 
    ,b.stock 
    ,a.authorname 
    ,o.ordernumber 
    ,o.numcopies 
    ,o.price 
from 
    book b 
    inner join 
     BookAuthor ba on 
     ba.isbn = b.isbn 
    inner join 
     Author a on 
     a.authorid = ba.authorid 
    left join 
     orderline o on 
     o.isbn = b.isbn 
    left join 
     bookorder bo on 
     bo.ordernumber = o.ordernumber 
where 
    b.isbn = 1491936169 
+0

ここでのエントリが3回繰り返されないように、重複する行を削除する方法を知っていますか? – Silverfin

+0

distinctを選択してください。 – scsimon

+0

distinctでは、ユニークな行全体のみがフィルタリングされ、各owは技術的に区別されます。ロジックで動作するグループがない限り。 – Silverfin

関連する問題