在SQL查询中连接多个表

时间:2017-06-09 13:27:39

标签: mysql sql join natural-join

我试图从我的数据库中的多个表中选择信息,这些信息显示了多本图书和订单的详细信息。 enter image description here

我正在查询isbn到某本书的5个表(作者,书籍作者,书籍,订单行和书籍订单),以检索有关该书的信息以及为该书订购的订单信息。

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:      

然而,有些isbns尚未订购,因此不在订单表中,但在书表中,显示所有书籍的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

错误代码:1055.SELECT列表的表达式#4不在GROUP BY子句中,并且包含非聚合列' mousavs.orderline.isbn'它在功能上不依赖于GROUP BY子句中的列

1 个答案:

答案 0 :(得分:1)

左连接101 ......你真的......如果你打算在RDMS工作,你真的需要阅读联接。

<input v-model="inputVal" ... />