2012-07-04 3 views
1

확인 - 도움이 필요합니다. 여기에서 씹을 수있는 것보다 더 많이 물릴 수 있습니다. 그러나 항상 최소 10 개의 결과를 반환하는 SQL 쿼리를 작성하려고합니다. 첫 번째 조건이 적용되고 결과 집합이 10 개를 초과하면 다음 조건으로 넘어갑니다.SQL - 검색 결과 필터링

예 £ 5.00 미만의 작은 빨간색 플라스틱 장난감 자동차를 찾으십시오.

나는 항상 화면에 최소한 10 개의 항목을 표시하려고합니다. "small"을 검색하고 "red"를 누른 다음 "< £ 5.00"을 검색하고 싶습니다. 쿼리가 10 개 이상의 항목을 반환하면 가능한 한 많은 태그 (예 : 플라스틱, 장난감 및 자동차)에서 계속 필터링하십시오. 더 많이 일치하면 순위를 매길 수 있습니다 (예 : 제품에 3 개의 태그가 모두있는 경우 이 -. 다음이 목록 아래로 떨어집니다 꽤 긴 예를

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 

- - 제품은 1 개 태그를 일치하는 경우는, 목록의 상단에있을 것입니다하지만 난 당신이 포인트를 얻을 희망 I. 가격표, 색상 및 크기와 같은 태그 표 내에 모든 필터를 넣는 것이 도움이되는지 궁금해했습니다.

아무 아이디어 나 누구?

감사

그것은 당신의 사용에 따라

답변

1

: 정수를 필터링하는 문자열보다 빠르다는 (? 그런데, 그들이 색인)뿐만 아니라 많은 시간이 소요됩니다 가입. 따라서 SQL 외부의 코드가 정수와 함께 작동하는 경우 해당 문자를 유지하십시오 (텍스트를 표시 할 필요가 없으면 참여하지 마십시오)