需要一点帮助解决问题。如果这是含糊的,这就是为什么我需要帮助的道歉。显示所有从未销售过的图书的标题ID,标题,发布商ID,发布商名称和条款。这意味着销售表中没有记录。对SALES表使用OUTER JOIN或NOT IN。在这种情况下,这些术语指的是涉及金钱的标题表上的项目。 (价格,预付款,版税)。
我提出了以下代码,并且没有返回任何记录。我查看了表格,不应该返回任何记录。基于使用OuterJoin或NOT IN,我不确定我的代码是否正确。谢谢!
SELECT titles.title_id,
titles.title,
publishers.pub_id,
sales.payterms,
titles.price,
titles.advance,
titles.royalty
FROM publishers
INNER JOIN titles
ON publishers.pub_id = titles.pub_id
INNER JOIN sales
ON titles.title_id = sales.title_id
WHERE (sales.qty = 0)
答案 0 :(得分:1)
好吧,您正在使用INNER JOIN
,因此它只返回与您想要的连接条件匹配的记录。您应该使用LEFT OUTER JOIN
(或LEFT JOIN
)并检查sales
方是否为空(表示没有匹配的记录)。
SELECT titles.title_id, titles.title, publishers.pub_id, sales.payterms,
titles.price, titles.advance, titles.royalty
FROM publishers INNER JOIN
titles ON publishers.pub_id = titles.pub_id LEFT OUTER JOIN
sales ON titles.title_id = sales.title_id
WHERE sales.title_id IS NULL
答案 1 :(得分:1)
我相信您只需要将销售表的INNER JOIN
更改为LEFT JOIN
即可。然后检查sales表中任何列的NULL
。
SELECT titles.title_id, titles.title, publishers.pub_id, sales.payterms,
titles.price, titles.advance, titles.royalty
FROM publishers INNER JOIN
titles ON publishers.pub_id = titles.pub_id LEFT JOIN
sales ON titles.title_id = sales.title_id
WHERE sales.qty IS NULL
答案 2 :(得分:0)
IS NULL表示数据库中不存在数据值。只需将INNER JOIN更改为LEFT JOIN即可。 用这个..
SELECT titles.title_id,
titles.title,
publishers.pub_id,
sales.payterms,
titles.price,
titles.advance,
titles.royalty
FROM publishers
INNER JOIN titles
ON publishers.pub_id = titles.pub_id
LEFT JOIN sales
ON titles.title_id = sales.title_id
WHERE (sales.qty IS NULL)