我的数据库作业有问题。我需要编写一个子查询,该子查询将显示具有以字母“S”开头的类别的ISBN和书名。
表:BOOK(ISBN,类别,标题,描述,版本,PublisherID)和CATEGORY(CatID,CatDescription)
键:BOOK(ISBN_PK,Category_FK)和CATERGORY(CatID_PK)--->类别= CATID
现在我有一些代码,但它返回一个错误。因为我提前做了这个硬件而我们仍然没有学习子查询,所以我在网上找到了解决问题的大部分方法。请帮忙。
我的代码:
SELECT ISBN, title FROM book WHERE category LIKE (SELECT catdescription FROM category WHERE catdescription LIKE 's%')
答案 0 :(得分:2)
您可以加入两个表而不是使用子查询,
SELECT a.*
FROM book a
INNER JOIN category b
ON a.Category = b.CatID
WHERE b.CatDescription LIKE 'S%'
要进一步了解联接,请访问以下链接:
如果您使用FULLTEXTSEARCH
引擎,请考虑使用LIKE
而不是MyISAM
。
答案 1 :(得分: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%')
答案 2 :(得分:0)
您不能在子查询中使用like。更有可能的是,只需更改到以下查询也可以。
SELECT ISBN, title
FROM book
WHERE category in (SELECT catdescription
FROM category WHERE catdescription LIKE 's%')
这假设book.category字段对应于category.catdescription字段。