我有三个表格,图像,标签和链接(见下表)SQL过滤通过多个标签
ImageNO | TagNO
1 | Sport
2 | Cars
3 | Sport
4 | Sport
3 | Cars
1 | Music
2 | Sport
(显然TAGNO将是实际的表的数字)
我想什么do允许过滤,以便用户可以选择任意数量的标签,并将图像过滤为只有选择了所有标签的图像。例如,如果用户选择“运动”,则将显示“图像NO”1,3,4和2。如果用户也选择“汽车”,则查询被细化并且仅显示“图像NO”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
($标签)是标签的数字阵列。
这个问题是只有一个标签的图像将永远不会显示为计数数= 1而不是> 1.任何帮助将不胜感激,在此先感谢。
请停止编辑并删除其他人提供有益的格式化的重要的一点。如果所提供的数据和SQL格式易于阅读,那么对于某人来说,帮助您更容易。 – LOD121
你可以用一个位掩码来做到这一点。如果我能想到一个具体的实现,我会附加它。 – ethrbunny