2014-05-08 148 views
0

所以我试着如下为“列出所有由作家盖尔书面和由袖珍书印刷书籍”SQL查询忽略条件

我的数据库表是

Table: author 
authorNumber, authorName 
     01   Gale 
     02   Ben 
Table: book 
bookCode, bookTitle,  publishCode 
    189 Press & Trash PB 
    3743 Ecommerce  PB 

Table: publisher 
publisherCode, publisherName 
     PB  Pocket Books 
     BB  Batman Books 

Table: wrote 
bookCode, authorNumber 
    189  01 
    3743 02 

这是我的查询,它忽略了我的大风条件,只是得到所有由袖珍书出版的书籍,有什么帮助?

SELECT bookTitle 
FROM Book B, Wrote BC, Author, Publisher PC 
WHERE B.bookCode = BC.bookCode 
AND B.publisherCode = PC.publisherCode 
AND authorName ='Gale' 
AND publisherName ='Pocket Books' 
GROUP BY bookTitle; 

回答

1

您忘记了添加author的加入条件。你最好使用明确的连接语法,使其更加明显。

SELECT B.bookTitle 
FROM Book B 
join Wrote BC on B.bookCode = BC.bookCode 
join Author A on BC.authorNumber = A.authorNumber 
join Publisher PC on B.publisherCode = PC.publisherCode 
WHERE A.authorName ='Gale' 
AND PC.publisherName ='Pocket Books' 
GROUP BY B.bookTitle 

而且你也不需要分组。

0

你缺少一个连接BC.authorNumber=Author.authorNumber

SELECT bookTitle 
FROM Book B, Wrote BC, Author, Publisher PC 
WHERE B.bookCode = BC.bookCode 
AND B.publisherCode = PC.publisherCode 
AND BC.authorNumber=Author.authorNumber 
AND authorName ='Gale' 
AND publisherName ='Pocket Books' 
GROUP BY bookTitle;`