[英]SQL - Filtering search results
好的–這里需要一些幫助–可能比我在這里所能找到的要多得多–但是我正在尋找編寫始終返回至少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
舉個很長的例子-但我希望你明白這一點。 我想知道將所有過濾器放在標簽表中是否有好處-即價格,顏色和大小,然后只需要針對標簽表進行搜索。
有任何想法嗎?
謝謝
這取決於您的用法:過濾整數比字符串快(順便說一下,它們是否被索引了?),但JOIN也很耗時。 因此,如果sql之外的代碼可以使用整數,請保留它們(如果不需要顯示文本,則不要加入)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.