在 SQL 中加入 5 个表

2 sql join

我在使用 SQL 语句时遇到问题。

基本上我有5张桌子,它们是:

Books、Records、OrderedBooks、OrderedRecords 和 Orders。

我的订单包含客户下的所有订单,我的orderedRecords 和orderedBooks 包含与客户订单相关的所有账簿和记录,显然账簿和记录表包含与每个账簿和记录相关的信息。

我的orderedrecords 和orderedbooks 包含与相应的书籍/记录相关的BookID 和RecordID。

我正在编写一个需要显示书名、书本成本、书本数量、书本总(价格*数量)记录标题、记录成本、记录数量、记录总数的应用程序。

账簿和记录的总数不必使用 SQL 中的数学函数计算。

到目前为止,我已经设法让它给我我想要的东西,但是,假设我有 3 个图书订单和 1 个记录订单,对于记录订单的其余两行,它将复制数据而不是简单地空的。我试过 Left 和 Right 连接,但没有用。

这是我的 SQL 语句...

SELECT Books.Title AS BookTitle
, Books.Cost AS BookCost
, OrderedBooks.Quantity AS BookQuantity
, OrderedBooks.Total AS BooksTotal
, Records.Title AS RecordsTitle
, Records.Cost AS RecordsCost
, OrderedRecords.Quantity AS RecordQuantity
, OrderedRecords.Total AS RecordsTotal 
-- Nothing wrong with select part
FROM Orders 
INNER JOIN OrderedBooks ON OrderedBooks.OrderID = Orders.ID 
FULL OUTER JOIN OrderedRecords ON OrderedRecords.OrderID = Orders.ID 
LEFT OUTER JOIN Books ON OrderedBooks.BookID = Books.ID 
LEFT OUTER JOIN Records ON OrderedRecords.RecordID = Records.ID 
WHERE (Orders.ID = 9)
Run Code Online (Sandbox Code Playgroud)

它返回正确订单号的正确订购书籍和记录,但是我似乎无法摆脱重复的行

小智 5

图书编号:

SELECT Books.Title AS BookTitle
, Books.Cost AS BookCost
, OrderedBooks.Quantity AS BookQuantity
, OrderedBooks.Total AS BooksTotal
, Records.Title AS RecordsTitle
, Records.Cost AS RecordsCost
, OrderedRecords.Quantity AS RecordQuantity
, OrderedRecords.Total AS RecordsTotal
FROM Orders 
INNER JOIN OrderedBooks ON OrderedBooks.OrderID = Orders.ID 
FULL OUTER JOIN OrderedRecords ON OrderedRecords.OrderID = Orders.ID 
LEFT OUTER JOIN Books ON OrderedBooks.BookID = Books.ID 
LEFT OUTER JOIN Records ON OrderedRecords.RecordID = Records.ID 
WHERE (Orders.ID = 9)
GROUP BY Books.ID
Run Code Online (Sandbox Code Playgroud)