在 JOINS 和 WHERE 子句有问题的 SQL 语句方面需要帮助
Need assistance with SQL statement having trouble with the JOINS and WHERE clause
该公司正在对其库存进行分析。他们正在考虑清除不受客户欢迎的书籍。为此,他们需要一份从未购买过的书籍清单。使用提供此信息的联接编写查询。您的结果应包括所有书籍详细信息和订单号列。按书名对结果排序。
SELECT o.order_nbr, b.*
FROM orders o JOIN books
WHERE
ORDER BY book_title
这就是我所能想出的全部,我仍在学习联接并努力找出正确的语句应该是什么。不确定在 WHERE 子句中放入什么,也不知道如何正确连接这些表。
您需要一个 ON
子句来指定您加入的对象。此外,您的 WHERE
子句是空的,并且您没有指定您正在使用的 JOIN
的类型。查看 table 的设置方式,预计您将在 ORDER_ITEMS
上加入 BOOKS
table,其中还包含 ORDER_NBR
。
在问题中,它要求查找没有订单的书籍,因此正确的连接应该是 BOOKS
和 ORDER_ITEMS
之间的 LEFT JOIN
,因为这将包括每本书,甚至那些没有订单的,它们的 ORDER_NBR
为 NULL
SQL 看起来像
SELECT o.order_nbr, b.*
FROM books b
LEFT JOIN order_items o on b.book_id = o.book_id
WHERE o.order_nbr is null
ORDER BY book_title
这将 return 只有没有订单的书。
该公司正在对其库存进行分析。他们正在考虑清除不受客户欢迎的书籍。为此,他们需要一份从未购买过的书籍清单。使用提供此信息的联接编写查询。您的结果应包括所有书籍详细信息和订单号列。按书名对结果排序。
SELECT o.order_nbr, b.*
FROM orders o JOIN books
WHERE
ORDER BY book_title
这就是我所能想出的全部,我仍在学习联接并努力找出正确的语句应该是什么。不确定在 WHERE 子句中放入什么,也不知道如何正确连接这些表。
您需要一个 ON
子句来指定您加入的对象。此外,您的 WHERE
子句是空的,并且您没有指定您正在使用的 JOIN
的类型。查看 table 的设置方式,预计您将在 ORDER_ITEMS
上加入 BOOKS
table,其中还包含 ORDER_NBR
。
在问题中,它要求查找没有订单的书籍,因此正确的连接应该是 BOOKS
和 ORDER_ITEMS
之间的 LEFT JOIN
,因为这将包括每本书,甚至那些没有订单的,它们的 ORDER_NBR
为 NULL
SQL 看起来像
SELECT o.order_nbr, b.*
FROM books b
LEFT JOIN order_items o on b.book_id = o.book_id
WHERE o.order_nbr is null
ORDER BY book_title
这将 return 只有没有订单的书。