我会尽力解释我的情况。我正在制作一个网站,您可以在其中通过浏览标签找到主题。那里没有什么奇怪的。不过,我在一些查询方面遇到了棘手的问题。它们对你来说可能很容易,我的大脑因为做了很多工作而变得一团糟:P。
我有表格“主题”和“标签”。它们使用包含 topic_id 和 tag_id 的表 tags_topics 连接。当用户想要找到一个主题时,他们可能首先选择一个标签作为过滤依据,然后将另一个标签添加到过滤器中。然后我进行查询以获取具有两个选定标签的所有主题。他们可能还有其他标签,但他们必须选择这些标签作为过滤依据。要过滤的标签数量不同,但我们总是有一个用户选择的标签列表来过滤。这主要在从连接表过滤中得到回答,我选择了多个连接解决方案。
现在我需要获取用户可以过滤的标签。因此,如果我们已经定义了 2 个标签的过滤器,我需要获取所有标签,但过滤器中的标签与包含过滤器中所有标签的主题相关联。这可能听起来很奇怪,所以我将举一个实际的例子:P
假设我们有三个主题:网球、健身房和高尔夫。
- 网球有标签:运动、球、球场和球拍
- 健身房有标签:运动,训练和肌肉
高尔夫有标签:运动、球、棒和户外
- 用户选择标签运动,所以我们显示所有三个网球、健身房和高尔夫,并且我们显示球、球场、球拍、训练、肌肉、棒和外部作为其他可能的过滤器。
- 用户现在将球添加到过滤器中。过滤器现在是运动和球类,因此我们显示网球和高尔夫主题,并使用球场、球拍、球杆和室外作为额外的可能过滤器。
- 用户现在将球场添加到过滤器中,因此我们将网球和球拍显示为额外的可能过滤器。
我希望我有点道理。顺便说一句,我正在使用 MySQL。