У меня есть таблица, подобная этой ... это очень упростило, чтобы упростить задачу.Поиск записей с похожими атрибутами в одной таблице в MySQL
|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
У каждого человека есть оценка того, насколько они пользуются определенным хобби. Если у них нет записи в базе данных для определенного хобби, мы предполагаем, что они не участвуют.
Предоставлено 1 человеку, мне нужно знать, кто, по крайней мере, участвует в самых похожих хобби. В приведенном выше примере, если бы я выбрал Джона, он должен установить Nate как (3), поскольку они разделяют 3 общих увлечения (бейсбол, теннис и шахматы), джейк и иордан оба получат (1)
Я мог бы сделать это с несколькими запросами, конечно ...
SELECT hobbies FROM tblname WHERE person='john';
SELECT person FROM tblname WHERE hobbies='baseball'
AND hobbies='tennis' AND hobbies='chess' AND name!='john'
и продолжайте делать это, но, похоже, НЕВЕРОЯТНО неэффективно.
Есть ли один оптимизированный запрос для создания такого рода материалов?
Да ладно - вы можете сделать это лучше! - и в вашей таблице нет колонки под названием 'hobbies' – Strawberry