编辑:答案有效,但会大大减慢查询速度。还有其他解决办法吗?
<小时/>我的程序中有以下对象。
Page
有各种TextBlock
有各种Token
.
这三者存储在数据库中的三个表中,对象名称相同。
我想知道是否可以仅通过一次查询来恢复填充程序中对象所需的所有数据。
我只想要一个查询,因为我正在使用 CURSOR
迭代存储在数据库中的所有对象。
数据库方案是这样的:
Page(id, someAttributes)<br/>
TextBlock(id,pageId, someAttributes)<br/>
Token(textblockId, someAttributes)
最佳答案
假设每个页面至少有一个文本 block ,每次尝试至少有一个 token
SELECT * FROM
Page AS P
INNER JOIN TextBlock T ON T.pageId = P.id
INNER JOIN Token TK ON TK.textblockId = T.id;
或者(旧语法):
SELECT * FROM
Page AS P, TextBlock T, Token TK WHERE
T.pageId = P.id AND
TK.textblockId = T.id;
如果上述条件可能并不总是成立,那么您需要使用 OUTER JOIN
而不是 INNER JOIN
。
关于java - 是否可以只用一个查询来检索分成三个表的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7200134/