私はphpとmysqlを使って高度な検索機能に取り組んでいます。
テーブルは次のとおりです。
blogPost[id, title, description]
water[id, title, description,]
waterSpecie[id, waterId, specieId]
specie[id, name]
user[id, username]
私がやりたいことはこれです: ユーザーはテキスト フィールドからキーワードを検索でき、結果は一度だけ一意でなければなりません。例えば:
ユーザーがタラを検索すると、タイトルまたは説明にタラが含まれるすべてのブログ投稿と、タラが含まれるすべての水域、およびユーザーがタラにニックネームが付けられているかどうかを表示したいと思います。しかし、blogPost のタイトルと説明に cod が含まれているとしたら、結果リストに 2 回表示されたくありません。
しかし、blogPost テーブルのタイトルに cod が含まれているとだけ言えば、それを表示したいだけで、他には何も表示したくありません。
私はこの sql クエリでそれを行うことができました: blogPost テーブルをそのクエリに追加し、そこから検索できるようにしたいと思います。そのため、cod を持つテーブルが 1 つだけの場合は、そのテーブルの結果のみを表示したいと考えています。
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;
私の問題を説明できたことを願っています。うまくいけば、この問題について助けが得られることを願っています。