Thanks in advance. I have a table set up something like this... this is
greatly simplified to make the question easier to ask.

|id|hobby|person|enjoyment
--------------------------
| |soccer|john|10
| |soccer|jake|5
| |baseball|john|3
| |baseball|nate|5
| |baseball|jordan|2
| |tennis|john|3
| |tennis|nate|7
| |chess|john|10
| |chess|nate|3
| |swimming|casey|6
Each person has a score of how much they enjoy a particular hobby. If they
don't have a record in the database for a particular hobby, we assume they
don't participate.

Given 1 person, I need to know who at least participates in the most
similar hobbies. In the above example, if I chose John, it should return
Nate as (3) since they share 3 hobbies in common (baseball, tennis and
chess), jake and jordan would both get (1)

I could do this with multiple queries of course...

SELECT hobbies FROM tblname WHERE person='john';

SELECT person FROM tblname WHERE hobbies='baseball' AND hobbies='tennis'
AND hobbies='chess' AND name!='john'

and keep doing that but it seems INCREDIBLY inefficient.

I am certain there is a single optimized query to do this kind of stuff but
it is WAY beyond me. Any ideas?

Reply via email to