列出与客户先前购买的图书属于同一类别的所有图书的标题 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 ()
但获得与使用&lt;&gt;,= any时相同的结果,
答案 0 :(得分:2)
小改变。
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
。
答案 1 :(得分:-1)
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);