作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有下表:
卡片
上传
标签
tag_upload
:标签和上传之间的关系。card_tag
:标签和卡片之间的关系。卡 1 与标签“事件”、“rmc”和“病人”相关。
上传 1 与标签“事件”和“患者”相关。
上传 2 与标签“event”、“rmc”和“病人”相关。
我选择了标签“事件”和“患者”。
它应该返回 Upload 1、Upload 2 和 Card 1。
我选择了标签“事件”、“rmc”和“患者”。
它应该返回 Upload 1 和 Card 1。
我当前正在使用以下命令,但当我执行此操作时,查询 2 返回与查询 1 相同的结果:
如果卡片中有标签,那么选择卡片的查询会是什么样子?我可以看一下您可能使用的示例或逻辑流程吗?
这是我的第一个版本,试图得到我想要的东西。使用 PHPSpec 后将立即转换为可测试的代码。
谢谢蛋蛋!
SELECT *
FROM(
SELECT cards.id, cards.name, cards.type,
cards.updated_at, cards.created_at, cards.image
FROM cards
JOIN card_tag ON card_tag.card_id = cards.id
JOIN tags ON card_tag.tag_id = tags.id
WHERE NOT tags.deleted
AND cards.type NOT IN ('','libraries')
AND cards.account_user_id = 1
AND tags.name IN ('rmc', 'test')
GROUP BY cards.id
HAVING COUNT(DISTINCT tags.id) = 1
UNION ALL
SELECT uploads.id, uploads.name, uploads.type,
uploads.updated_at, uploads.created_at, uploads.image
FROM uploads
JOIN tag_upload ON tag_upload.upload_id = uploads.id
JOIN tags ON tag_upload.tag_id = tags.id
WHERE NOT tags.deleted
AND uploads.type NOT IN ('','libraries')
AND uploads.account_user_id = 1
AND tags.name IN ('rmc','test')
GROUP BY uploads.id
HAVING COUNT(DISTINCT tags.id) = 2
) AS qry
ORDER BY `updated_at` DESC
LIMIT 0, 35
最佳答案
作为起点,考虑加入表格、分组和过滤结果:
SELECT cards.id, cards.name, cards.type,
cards.updated_at, cards.created_at, cards.image
FROM cards
JOIN card_tag ON card_tag.card_id = cards.id
JOIN tags ON card_tag.tag_id = tags.id
WHERE NOT deleted
AND cards.type NOT IN ('','libraries')
AND cards.account_user_id = ?
AND tags.name IN ('event','patient')
GROUP BY cards.id
HAVING COUNT(DISTINCT tags.id) = 2
如果(card_id, tag_id)
保证在card_tag
中是唯一的,则可以替换COUNT(DISTINCT Tags.id )
与性能更高的 COUNT(*)
。
然后可以在 uploads
表上使用类似的查询UNION
。
关于php - 带有 UNION 的限制性 WHERE IN SQL 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23206463/
我是一名优秀的程序员,十分优秀!