[英]SQL Filtering Through Multiple Tags
我有三个表格、图片、标签和链接(下表)
ImageNO | TagNO
1 | Sport
2 | Cars
3 | Sport
4 | Sport
3 | Cars
1 | Music
2 | Sport
(显然 TagNO 将是实际表中的数字)
我想要做的是允许过滤,以便用户可以选择任意数量的标签,图像将被过滤为仅选择所有标签的图像。 例如,如果用户选择“运动”,则将显示“imageNO”1、3、4 和 2。 如果用户还选择了“汽车”,则查询会被细化,并且只会显示“imageNO”3 和 2。
到目前为止,我已经从网络上的示例中尝试了很多东西,这是我最接近的......
SELECT *
FROM images
LEFT JOIN links
ON INO = links.INO
LEFT JOIN tags
ON tags.TagNO = links. TagNO
WHERE links. TagNO
IN ($tags)
GROUP BY INO
HAVING COUNT( INO ) >1
($tags) 是一个标签编号数组。
问题是只有一个标签的图像永远不会显示,因为计数数字是 = 1 不是 > 1。任何帮助将不胜感激,提前致谢。
您必须在同一张桌子上多次加入。 为此使用别名:
SELECT * FROM images
LEFT JOIN links AS l1 ON l1.INO = images.INO
LEFT JOIN tags AS t1 ON t1.TagNO = l1.TagNO
LEFT JOIN links AS l2 ON l2.INO = images.INO
LEFT JOIN tags AS t2 ON t2.TagNO = l2.TagNO
[...]
WHERE t1.tagNO = $tag1
AND t2.tagNO = $tag2
[...]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.