H2 数据库和全文搜索的内连接
Posted
技术标签:
【中文标题】H2 数据库和全文搜索的内连接【英文标题】:Inner join with H2 database and fulltextsearch 【发布时间】:2013-02-08 15:53:47 【问题描述】:我有一个表“BANKRECORDING”,它包含对不同表的 ID 引用。
这个表存储在H2数据库中,我使用的是全文搜索的方法。
例如,我有一个“BANKRECORDING”:
ID | ID_LIBELLE | ID_PAYMENT
1 | 2 | 3
2 | 2 | 10
通过简单的查询,我的内部连接可以工作。但是在这个查询中我不知道该怎么做:
SELECT B.*
FROM FT_SEARCH_DATA(1, 0, 0) FT,
BANKRECORDING B
WHERE FT.TABLE='BANKRECORDING' AND B.ID=FT.KEYS[0]
它返回我所有的结果,但带有 ID...
我已经尝试过了,但它返回了很多结果......存储在我的数据库中的逐行元素。
SELECT B.*, L.*, ET.*, P.*, MO.*
FROM FT_SEARCH_DATA('car', 0, 0) FT,
BANKRECORDING B, LIBELLE L, ETAT ET, PAYMENT P, MOTIF MO
WHERE FT.TABLE='BANKRECORDING' AND B.ID=FT.KEYS[0]
有人知道如何在这个查询中进行 INNER JOIN 吗?
编辑:
期望的输出:
ID | ID_LIBELLE | ID_PAYMENT
1 | car | bank check
2 | car | transfer
【问题讨论】:
你能显示想要的输出吗? 将代码示例翻译成英文可能是个好主意。使用我们不理解的名称来推理数据模型有点困难。 哎呀......对不起,我的示例输出数据发生了变化 我明白了。不知道这样的工具,将阅读它。您可能希望将此链接添加到问题中。 不好意思,说一下“这个表是存储在H2Databse中的,我用的是全文搜索的方式”。不是很清楚,我知道 【参考方案1】:哦!感谢安德鲁,我发现了它的工作原理!事实上,要显示数据,我们必须在 SELECT 中指定每个元素:
SELECT b.id, l.libelle, p.libelle
FROM FT_SEARCH_DATA(1, 0, 0) FT, ENREGISTREMENT b
JOIN LIBELLE l on (b.id_libelle = l.id)
JOIN MODEREGLEMENT p on (b.id_MODEREGLEMENT = p.id)
WHERE b.id=FT.KEYS[0]
AND FT.TABLE='ENREGISTREMENT'
ORDER BY b.id;
我不知道为什么我们不能为元素调用“b.*”...
【讨论】:
以上是关于H2 数据库和全文搜索的内连接的主要内容,如果未能解决你的问题,请参考以下文章