我正在使用 php 和 mysql 开发高级搜索功能。
这些表是:
blogPost[id, title, description]
water[id, title, description,]
waterSpecie[id, waterId, specieId]
specie[id, name]
user[id, username]
我想要做的是:用户将能够从带有关键字的文本字段中进行搜索,并且结果应该只有一次。例如:
用户搜索鳕鱼,然后我想显示所有标题或描述中有鳕鱼的博文,以及所有有鳕鱼的水域,以及用户是否是鳕鱼。但是,如果假设 blogPost 的标题和描述中有 cod,我不希望它在结果列表中出现两次。
但是,如果只是说 blogPost 表的标题中有 cod,我只想展示它而不是其他任何东西。
我已经设法用这个 sql 查询做到了:我现在想将 blogPost 表添加到该查询中,并使其可以从中进行搜索。因此,如果只有一个表有 cod,我只想显示该表的结果。
SELECT DISTINCT W.lat, W.lng, W.municipalityId, W.title, W.description
FROM water AS W, specie AS S, waterSpecie AS WS
WHERE S.name LIKE '%$term%' AND W.id = WS.waterId AND S.id = WS.specieId
OR W.title LIKE '%$term%' AND W.id = WS.waterId AND S.id = WS.specieId;
我希望我已经设法解释了我的问题,并希望我能在这个问题上得到一些帮助。