I am just beginning to write an application that matches developers skills against a project's skills need.

basically developers would enter information about themselves. namely a list of their skills (and maybe the number of years experience)

And a project owner would add a project with details of the types of skills needed for the project (ie. sql server, c++).

my initial thought would obviously to have a developer and project table and for both of these tables to have a skills field which would have a list of the skills in.

i would want both the develoer and the project owner to be able to say. "get me a list of the suitable developers for this project" and likewise the developer to say "get me a list of the projects for which i am suitable".

My problem is i'm not sure how i would write that query.

for s developer to get his i guess the query would be something like

select *
from tbl_project
where skills like '%c++%' or skills like '%vb6%'

etc etc, for however many skills a developer has entered.
(i guess i could use OPENXML () and build an xml string of skills to pass to the query)
This might work. but i don't think it would be very good performance wise, especially if there were thousands of projects (or thousands of developers for the project owner version of that query)

I would be really grateful if someone could give me some guidance on this. Should i design the db a different way? is there a better way to do what is essentially a search of many to many attributes?

Also the ideal for me would be to be able to rank/order the result by suitablility so for a project that required sql server and c++, a developer with both sql server and c++ skills would come above a developer with just sql server skills.

just realised i haven't mentioned the tech i would be using. sql server 2k back end and asp.net