0

我的数据库作业有问题。我需要编写一个子查询来显示书名的 ISBN 和书名,这些书名的类别以字母“S”开头。

表:BOOK(ISBN, Category, Title, Description, Edition, PublisherID) 和 CATEGORY(CatID, CatDescription)

键:BOOK(ISBN_PK, Category_FK) 和 CATERGORY(CatID_PK) ---> Category=CatID

现在我有一些代码,但它返回一个错误。因为我提前做这个硬件,我们仍然没有学习子查询,所以我在网上找到了大部分问题的解决方案。请帮忙。

我的代码:

SELECT ISBN, title FROM book WHERE category LIKE (SELECT catdescription FROM category WHERE catdescription LIKE 's%')
4

3 回答 3

2

您可以加入两个表而不是使用子查询,

SELECT  a.*
FROM    book a
        INNER JOIN category b
            ON a.Category = b.CatID
WHERE   b.CatDescription LIKE 'S%'

要进一步了解有关联接的更多信息,请访问以下链接:


考虑使用FULLTEXTSEARCH而不是LIKE使用MyISAM引擎。

于 2013-04-28T17:08:56.300 回答
0

将 LIKE 更改为 IN

   SELECT ISBN, title FROM book WHERE title IN (SELECT catdescription FROM category WHERE catdescription LIKE 's%')

编辑:

SELECT ISBN, title FROM book WHERE ISBN IN (SELECT catdescription FROM category WHERE catdescription LIKE 's%')
OR title IN (SELECT catdescription FROM category WHERE catdescription LIKE 's%')
于 2013-04-28T17:10:50.587 回答
0

您不能在子查询中使用 like 。很可能,只需更改为以下查询也可以。

SELECT ISBN, title 
  FROM book 
  WHERE category in (SELECT catdescription 
                      FROM category WHERE catdescription LIKE 's%')

这假定 book.category 字段对应于 category.catdescription 字段。

于 2013-04-28T17:10:58.633 回答