New MySQL SELECT QUERY

wxdqz

New Member
Sorry, new query problem:

I have three variables: $keyword1, $keyword2 and $keyword3, and one table: referees which has three fields: ref_keyword1, ref_keyword2, ref_keyword3.

I need to list all records in 'referees' which contain strings in any of these fields that match any one of these variables, and order the records by the number of matches, i.e. three matches first and so on.

I thought to use the 'expr [NOT] IN (value,...)' like so:

FOR 3 MATCHES
(ref_keyword1 IN ('$keyword1','$keyword2','$keyword3')
&& ref_keyword2 IN ('$keyword1','$keyword2','$keyword3')
&& ref_keyword3 IN ('$keyword1','$keyword2','$keyword3'))

FOR 2 MATCHES
(ref_keyword1 IN ('$keyword1','$keyword2','$keyword3')
&& ref_keyword2 IN ('$keyword1','$keyword2','$keyword3')
&& ref_keyword3 NOT IN ('$keyword1','$keyword2','$keyword3'))
||
(ref_keyword1 IN ('$keyword1','$keyword2','$keyword3')
&& ref_keyword2 NOT IN ('$keyword1','$keyword2','$keyword3')
&& ref_keyword3 IN ('$keyword1','$keyword2','$keyword3'))
||
(ref_keyword1 NOT IN ('$keyword1','$keyword2','$keyword3')
&& ref_keyword2 IN ('$keyword1','$keyword2','$keyword3')
&& ref_keyword3 IN ('$keyword1','$keyword2','$keyword3'))

FOR 1 MATCH
(ref_keyword1 IN ('$keyword1','$keyword2','$keyword3')
&& ref_keyword2 NOT IN ('$keyword1','$keyword2','$keyword3')
&& ref_keyword3 NOT IN ('$keyword1','$keyword2','$keyword3'))
||
(ref_keyword1 NOT IN ('$keyword1','$keyword2','$keyword3')
&& ref_keyword2 IN ('$keyword1','$keyword2','$keyword3')
&& ref_keyword3 NOT IN ('$keyword1','$keyword2','$keyword3'))
||
(ref_keyword1 NOT IN ('$keyword1','$keyword2','$keyword3')
&& ref_keyword2 NOT IN ('$keyword1','$keyword2','$keyword3')
&& ref_keyword3 IN ('$keyword1','$keyword2','$keyword3'))

But I still need to order them and don't know how.

Any ideas?
 
Back
Top