gpt4 book ai didi

php - SQL 查询 - 如果不匹配则限制结果

转载 作者:行者123 更新时间:2023-11-29 13:02:56 25 4
gpt4 key购买 nike

背景:

这是一个用于搜索充满产品的数据库的查询,并且 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 中的不匹配,那么我想排除这些结果。

我是否需要在该语句中执行另一条 select 语句才能实现此目的?希望这是有道理的

最佳答案

试试这个:

SELECT *
FROM gifts AS g
LEFT JOIN tags_gifts_occasion_specific AS os ON g.gift_id = os.gift_id
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 (os.tag_id IS NULL OR os.tag_id = '887')
AND tags_gifts.tag_id = '887'

GROUP BY gifts.gift_id
ORDER BY COUNT(*) DESC , gift_popularity DESC

关于php - SQL 查询 - 如果不匹配则限制结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23087898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com