簡體   English   中英

SQL-過濾搜索結果

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM