内部连接与H2数据库和fulltextsearch

时间:2013-02-08 15:53:47

标签: java sql full-text-search inner-join h2

我有一个表“BANKRECORDING”,它包含对不同表的ID引用。

此表存储在H2 Databse中,我使用fulltextsearch方法。

例如,我有一个“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

1 个答案:

答案 0 :(得分:0)

哦,哦!感谢Andrew,我发现它是如何工作的!实际上,要显示数据,我们必须在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。*”...