2012-05-07 13 views
0

複数の入力のstyleIDフィールドとcolorIDフィールドを検索したいと考えています。たとえば、styleID = 3、styleID = 4、colorID = 1、colorID = 5のテーブルを検索し、その結果をboxIDでグループ化したいとします。そのグループ内の実際のマッチの数で結果を注文する。返された複数の列が最も一致する

styleIDが4、styleIDが3、colorIDが1、colorIDが5のboxIDが最初に表示され、すべての条件に一致します。

 
ID boxID  styleID  colorID  keywords
1 1 4 1 Sexy Tie
2 1 3 2 Red Tie
3 1 3 6 Striped Blue
4 2 3 2 Checkers
5 2 3 5 It's not blue
6 2 4 6 Cyan is purple
7 3 4 2 Fancy
8 3 4 5 Fancy
9 3 4 2 Fancy

答えて

2

あなたはその

select boxId, sum(matches) 
from (select boxID, 
     (case when styleId IN (4) then 1 else 0 end) + 
     (case when colorId in (1, 5) then 1 else 0 end) matches 
     from test) t1 
group by boxId 
order by sum(matches) desc; 

http://sqlfiddle.com/#!2/b5879/20

+0

ような何かを試みることができるように良いこれまでのところ、どうもありがとうございましたが、それが動作しているようです! – stickman373

関連する問題