这是搜索分贝十足的产品的查询和SQL是建立在依赖于用户搜索什么飞。
SELECT *
FROM gifts
LEFT JOIN tags_gifts ON tags_gifts.gift_id = gifts.gift_id
LEFT JOIN tags ON tags.id = tags_gifts.tag_id
WHERE published = '1'
AND ((tags_gifts.tag_id = '887'))
GROUP BY gifts.gift_id
ORDER BY COUNT(*) DESC , gift_popularity DESC
这是按计划工作,但我正在努力的下一部分我正在努力。
我有另一个表“tags_gifts_occasion_specific”,其具有的“gift_id”和“TAG_ID”
基本上如果用户搜索像上面但没有TAG_ID搜索列或他们搜索的tag_id与tags_gifts_occasion_specific.tag_id中的tag_id不匹配,我想排除这些结果。
我需要在这个内部做另一个选择语句来实现这个吗?希望这是有道理
你能澄清你的问题吗? tags_gifts_occasion_specific的用途是什么? –
对不起 - 该表格用于存储gift_id,只有在用于查找它们的标签与搜索到的标签相匹配时才会出现在搜索结果中。例如。如果有人搜索但没有输入标签(关键字),那么产品将不会出现。但是,如果他们搜索与标签匹配的“母亲节”,则会显示这些项目。这允许与特殊日子有关的产品在通用搜索中被忽略,例如“红色”。搜索'红'的用户不会看到任何“母亲节”的礼物,即使他们也匹配'红' –
是否有另一种搜索方式(除了tag_id)? –