使用 BOOK_ORDER、ORDER_ITEMS 和 BOOKS 表,使用 OUTER JOIN 操作创建一个查询,该操作将列出 BOOKS 表中所有书籍的书名、订购日期和订购号。按 ORDER_ITEMS.BOOKID 降序排列您的输出。有三本书从未订购过,它们应该显示在您的列表顶部。
我写了这个查询: -
SELECT B.TITLE, BO.ORDERDATE, ORD.ORDERID FROM BOOKS B, BOOK_ORDER BO, ORDERITEMS ORD
WHERE B.BOOKID = ORD.BOOKID
AND BO.ORDERID = ORD.ORDERID(+)
ORDER BY ORD.ORDERID DESC
我得到了结果,但对问题的以下部分感到困惑:-
“有三本从未订购过的书应该出现在您的列表顶部。”
我猜这意味着我需要将那些具有 Orderdate 和 OrderId 的书籍显示为 NULL 或空白。但是如何让这些行位于结果集之上?我应该在我写的查询中更改什么?
这是BOOKS表:-
Name Null? Type
----------------------------------------- -------- ---------------
BOOKID NOT NULL NUMBER(15)
ISBN VARCHAR2(10)
TITLE VARCHAR2(30)
PUBDATE DATE
PUBID NUMBER(2)
COST NUMBER(5,2)
RETAIL NUMBER(5,2)
CATEGORY VARCHAR2(12)
这是 ORDER_ITEMS 表:-
Name Null? Type
----------------------------------------- -------- ----------------
ORDERID NOT NULL NUMBER(4)
ITEMNUM NOT NULL NUMBER(2)
BOOKID NOT NULL NUMBER(15)
QUANTITY NUMBER(3)
这是 BOOK_ORDER 表结构:-
Name Null? Type
----------------------------------------- -------- --------------
ORDERID NOT NULL NUMBER(4)
CUSTOMERID NUMBER(4)
ORDERDATE DATE
SHIPDATE DATE
SHIPSTREET VARCHAR2(20)
SHIPCITY VARCHAR2(20)
SHIPSTATE VARCHAR2(2)
SHIPZIP VARCHAR2(5)