4

列出与客户 1007 之前购买的图书属于同一类别的所有图书的标题。不包括此客户已购买的图书。(子查询)

这是我到目前为止所拥有的:

SELECT title, customer#, category
FROM orders JOIN orderitems USING (order#)
        JOIN books USING (isbn)
WHERE isbn <> (SELECT customer#, isbn
        FROM orders o JOIN orderitems oi 
        ON o.order#=oi.order#
        where o.order#=oi.order# and o.customer#=1007);

第一个选择返回所有书名,第二个选择返回同一客户购买的所有书籍。我尝试使用NOT IN (),但得到的结果与使用 <>、=any、

4

2 回答 2

1

小变化。

SELECT title, customer#, category
FROM orders JOIN orderitems USING (order#)
        JOIN books USING (isbn)
WHERE isbn NOT IN (SELECT isbn
        FROM orders o JOIN orderitems oi 
        ON o.order#=oi.order#
        where o.order#=oi.order# and o.customer#=1007);

我知道您已经尝试过NOT IN,但是子选择应该只返回一列,在这种情况下,isbn.

于 2012-09-28T06:57:23.770 回答
-3
SELECT title, category 
FROM books WHERE category IN
 (SELECT category FROM books JOIN orderitems USING (isbn) 
   JOIN orders USING (order#) WHERE customer# = 1007)
 AND isbn NOT IN (SELECT isbn FROM orders JOIN orderitems USING (order#)
WHERE customer# = 1007);
于 2015-07-09T19:00:36.463 回答