使用INNER JOIN

时间:2015-07-09 06:46:20

标签: sql postgresql

所以,基本上,我有两个名为“dadoscatalogo”和“palavras_chave”的表,有一个共同的字段,“patrimonio”,这是“dadoscatalogo”的主键。

我正在使用servlet通过这些表连接到数据库,并根据用户定义的某些搜索条件传递查询以搜索条目。

现在,由于用户可以根据两个表中的信息搜索条目,因此我需要执行INNER JOIN,然后使用WHERE搜索该信息。我也在使用LIKE,因为用户可能只传递部分信息,而不是全部信息。

所以,为了全面测试,我尝试将一些参数传递给它,并看看它是如何进行的。经过一些调试,我发现查询中有一些错误。但我似乎无法准确地指出它是什么。

这是测试查询:

SELECT dadoscatalogo.patrimonio
FROM dadoscatalogo 
  INNER JOIN palavras_chave 
    ON dadoscatalogo.patrimonio=palavras_chave.patrimonio 
WHERE dadoscatalogo.patrimonio LIKE '%' 
  AND dadoscatalogo.titulo LIKE '%tons%' 
   OR palavras_chave.palchave LIKE '%programming%';

所以,基本上,我正在尝试对这个查询做的是,从“dadoscatalogo”获取所有主键,这些主键链接到包含“tons”的“titulo”或包含“palchave”的记录“编程”。

PS。很抱歉这些名字不是英文,希望它不会太过分散注意力。

编辑:现在,表格没有多少:

这是dadoscatalogo表: http://gyazo.com/fdc848da7496cea4ea2bcb6fbe81cb25

这是palavras_chave表: http://gyazo.com/6bb82f844caebe819f380e515b1f504e

当他们加入时,我希望它有4个记录,并且它会在dadoscatalogo中得到patrimonio = 2的那个(在titulo中有“ton”),并且那个有palchave =编程的那个(可能有此Patrimonio = 1)

1 个答案:

答案 0 :(得分:0)

按照我的理解运行以下查询:

 SELECT dadoscatalogo.patrimonio
FROM dadoscatalogo 
  INNER JOIN palavras_chave 
   ON dadoscatalogo.patrimonio=palavras_chave.patrimonio 
WHERE dadoscatalogo.titulo LIKE '%tons%' 
  OR palavras_chave.palchave LIKE '%programming%';