帮助Delphi 7,ADO和MS Access SQL语句 - 部分Deuce

IEl*_*ite 0 sql delphi ms-access ado delphi-7

我需要帮助理解为什么我的SQL不起作用.或者,如果我需要以不同的方式编写它以获得我需要的结果.正如标题所示,我使用的是Delphi 7,ADO组件和MS Access 2000数据库.您可以在此处查看第I部分中的表结构:
帮助Delphi 7,ADO和MS Access SQL语句

我目前用来获取基于关键字的所有知识的SQL如下:

select*from(知识K
内连接knowledge_keywords KKW on KKW.knowledgeid = K.id)
内连接关键字KW on KW.id = KKW.keywordid
where(KW.keyword ='job')AND(KW.keyword ='task' )

然而,当知识id中具有相同知识id的那两个单词中显然存在这两个单词时,这不会返回并产生结果.

但是,如果我使用OR而不是AND执行相同的SQL,我会得到我预期的两条记录

select*from(知识K
内连接knowledge_keywords KKW on KKW.knowledgeid = K.id)
内连接关键字KW on KW.id = KKW.keywordid
where(KW.keyword ='job')AND(KW.keyword ='task' )

谢谢你的帮助

Lar*_*tig 5

想想这样说:有多少记录knowledge_keywords,这就是它真的是有两个关键字="工作" 关键字="任务".没有这样的记录.当你使用,你是要求满足记录双方的第一个条件,并在同一时间的第二个条件.当您使用OR时,您要求的记录满足一个条件或另一个条件(或两者).

在这种情况下,OR表达你想要的.并表达不同的东西.

你也可以使用KW.keyword IN('job','task'),它更简洁,也许更清晰.