从数据库中选择一系列经文

时间:2011-01-17 18:51:20

标签: sql ms-access vbscript asp-classic

我有一个数据库,包含圣经中的经文,包含以下字段: 书(书号),章节(章节号),诗句(诗句号),文字(诗句)

例子:1 1 1起初,上帝创造了天地。
第一个用于 Genesis ,第二个用于第一章,第三个用于第一个

用户给我一些像1 1:1 - 1 1:4这意味着他想要显示创世纪1:1-4。

我想做的事情就像是SELECT (book*1000000+chapter*1000+verse AS index) FROM bible WHERE index >= 1001001 AND index <=1001004
或者WHERE book*1000000+chapter*1000+verse >= 1001001 AND book*1000000+chapter*1000+verse <= 1001004

2 个答案:

答案 0 :(得分:1)

我建议单列“索引”,但不是每次为查询计算它(执行速度慢1000倍),而是从公式“book * 1000000 + chapter * 1000 + verse”执行一次性填充。

UPDATE bible
SET index = book * 1000000 + chapter * 1000 + verse

假设您在表单中有控件选择书籍,章节和诗句,包括开头和结尾。然后,您将构建过滤器

SELECT index, verse
FROM bible
WHERE index >=
    Forms!f!startBook * 1000000 + Forms!f!startChapter + 1000 + Forms!f!startVerse
AND index <=
    Forms!f!endBook * 1000000 + Forms!f!endChapter + 1000 + Forms!f!Verse

如果每次都必须使用计算出的列(我有超过1毫秒的时间),那么

SELECT index_, verse
FROM (select book * 1000000 + chapter * 1000 + verse as index_, * from bible) B
WHERE index_ >= 1 AND index_ <= 2

这两个?是参数的ASP命令占位符。使用相同的公式预先计算索引

startIndex = Request("sbook") * 1000000 + Request("schapter") * 1000 + Request("sverse")

答案 1 :(得分:0)

这有效: SELECT text FROM bible WHERE book * 1000000 + chapter * 1000 + verse&gt; =“&amp; from&amp;”AND book * 1000000 + chapter * 1000 + verse&lt; =“&amp; last