我是对象关系数据库的新手,我正在尝试开发一个查询,该查询将根据与主题的匹配数返回结果。例如,我的表如下所示:表我的主题类型由两个属性(id、标题(组成。每本书可以有多个主题,因此当用户输入一串主题时,它将返回 isbn、标题、计数(*(、价格排名匹配数(计数(。我已经使用连接形成了关系数据库的查询,但我无法为嵌套表重现它。我的关系数据库查询是这样的:SELECT b.ISBN, b.TITLE, COUNT(*) FROM BOOKS b JOIN BOOK_SUBJECT bs ON bs.ISBN = b.ISBN WHERE bs.ID IN (1, 2, 3) GROUP BY b.ISBN, b.TITLE ORDER BY COUNT(*) DESC
.
编辑:这次我正在尝试按主题标题而不是id进行搜索。
编辑:解决方案SELECT b.ISBN, b.TITLE, count(*) FROM BOOKS2 b, table(b.subjects) d WHERE d.title like '%math%' or like '%science%' GROUP BY b.ISBN, b.TITLE ORDER BY COUNT(*) DESC
编辑:如何使其不区分大小写?
根据您的评论:
我现在的问题是如何使搜索不区分大小写? 例如,"数学"与"数学"或"MaTh"相同
您可以使用upper
或lower
功能将title
转换为相应的表单并相应地进行搜索。请在下面尝试。
SELECT b.isbn,
b.title,
Count(*)
FROM books2 b,
TABLE(b.subjects) d
WHERE LOWER(d.title) LIKE '%math%'
OR LOWER(d.title) LIKE '%science%'
GROUP BY b.isbn,
b.title
ORDER BY Count(*) DESC