我有一个数据库,结构是这样的。 http://prnt.sc/ed3uk5
Id是表的主键,Text_Type是Post id(forn键)。一个长的描述被分成4行并与forn键(Type)绑定所以所提到的screeshot基本上有4行与一个帖子有关,完整描述是“Kampanien Ferienwohnung in VillammareFerienwohnungenfür6Personen geschmackvoller Apartmentkomplex im Cilento Swimming-Pool,Garten ,Bar,zum Meer约150米“当我们合并4行时。关于前端的描述也显示为我通过组合4行显示(描述是按类型组合)。
所以现在我想实现具有多个关键字和描述的搜索功能,所有关键字都将返回其“类型”。例如,如果我搜索“Personen 150”,那么如果帖子的描述同时包含两个关键词,那么它应该返回“类型”。如果我们使用select type from tblName where description like "%Personen %" and description like "%150 %"
那么它将返回null,因为任何行都没有两个关键字,但我想通过与“Text”组合来搜索所有行,因此如果两个关键字匹配,它将返回“Text”完整描述(按文字组合4行),所以在这种情况下它应该返回1,因为完整描述有两个关键字。
请帮我摆脱这个。
答案 0 :(得分:3)
你可以使用这样的聚合:
$mypassword=$_POST["mypassword"];
使用条件聚合,我们检查给定搜索字符串是否存在于给定类型的任何描述中。如果字符串包含给定的搜索字符串,则select type
from your_table
group by type
having count(case when description like '%Personen%' then 1 end) > 0
and count(case when description like '%150%' then 1 end) > 0;
将返回1,否则返回null,并且由于我们正在聚合,因此我们使用CASE
检查一个或多个描述是否包含搜索字符串。 / p>