sql - 在 SQL 中连接 5 个表

标签 sql join

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

基本上我有 5 个表,它们是:

书籍、记录、OrderedBooks、OrderedRecords 和订单。

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

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

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

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

到目前为止,我已经设法让它准确地给出我想要的,但是,假设我有 3 个图书订单和 1 个记录订单,对于记录订单的剩余两行,它将复制数据只是空的。我试过左连接和右连接,但都没有用。

这是我的 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)

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

最佳答案

书籍.id:

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

关于sql - 在 SQL 中连接 5 个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14803135/

相关文章:

mysql - 需要在第三张 table 中加入 2 张 table 及其 FK

sql - 在 Oracle 中添加冗余连接条件会导致不同的计划

c# - 选择整个第一个表,并用连接表覆盖一列

mysql - mysql中的条件连接

mysql - 为什么我们在多个删除中的 'DELETE' 之后提供别名

sql - 如何使用 mySQL SELECT IF 语句行来连接另一个表?

javascript - 将 2 个 google 图表数据表合并到 1 个

php - 需要Sql逻辑

sql - 如何按列和下一行排序并按另一列排序?

mysql - 如果哪里不包括主键组合的所有列,mysql超时?怎么了?