根据 oracle 中嵌套表中不区分大小写的匹配项对结果进行排名



我是对象关系数据库的新手,我正在尝试开发一个查询,该查询将根据与主题的匹配数返回结果。例如,我的表如下所示:表我的主题类型由两个属性(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"相同

您可以使用upperlower功能将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 

最新更新