如何将这两个SELECT语句连接在一起返回结果?

时间:2012-09-28 06:53:54

标签: sql

列出与客户先前购买的图书属于同一类别的所有图书的标题 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时相同的结果,

2 个答案:

答案 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);