1

好的——在这里需要一些帮助——可能比我在这里能咀嚼的更多——但我正在寻找一个总是返回至少 10 个结果的 SQL 查询。如果应用第一个条件并且结果集超过 10 个结果,则继续下一个条件等。

示例 找出所有价格低于 5.00 英镑的小型红色塑料玩具车。

我总是想在屏幕上显示至少 10 个项目。要搜索“小”,然后搜索“红色”,然后搜索“< 5.00 英镑”。如果查询返回的商品超过 10 个,则继续过滤尽可能多的标签(即塑料、玩具和汽车)——匹配的越多,它的排名就越高(即,如果一个产品的所有 3 个标签都与它——它会在列表的顶部,如果一个产品只匹配 1 个标签——那么它会在列表的下方。

Price Table
ID      Price
1       £1.50
2       £2.50
3       £6.00
.
Colour Table
ID      Colour
1       Red
2       Blue
3       Yellow
.
Size  Table
ID      Shape
1       Small
2       Medium
3       Large
.
Products Table
ID  Description    price_id     colour_id   size_id
1   Item 1         1            2           2
2   Item 2         2            2           1
3   Item 3         1            1           1
4   Item 4         3            2           3
5   Item 5         3            1           2
6   Item 6         1            1           2
7   Item 7         1            1           3

 .
Tags Table
ID      Description
1   Shiny
2   Plastic
3   Wood
4   Toy
5   Disney
6   Animal
7   Car
.
Items_Tags Table
ID      tag_id      product_id
1       1           1
2       4           1
3       7           1
4       2           2
5       3           3
6       4           3
7       7           6
8       7           7
9       7           2

一个很长的例子——但我希望你明白这一点。我想知道将所有过滤器放在标签表中是否有任何好处——即价格、颜色和尺寸,然后只需要搜索标签表。

有什么想法吗?

谢谢

4

1 回答 1

1

这取决于您的使用情况:过滤整数比字符串快(顺便说一下,它们是否被索引?)但 JOIN 也很耗时。因此,如果 sql 之外的代码与整数一起使用,请保留它们(如果不需要显示文本,请不要加入)

于 2012-07-04T14:18:42.433 回答