SELECT disease_id
FROM analyze
GROUP BY disease_id
HAVING COUNT(symptom_id) > 1
Редактировать: чтобы ответить на отредактированный вопрос
SELECT disease_id, COUNT(DISTINCT symptom_id)
FROM analyze
WHERE symptom_id IN ($symptom1, $symptom2, $symptom3)
GROUP BY disease_id
ORDER BY COUNT(DISTINCT symptom_id) DESC
Конечно, вам придется заменить $symptomX
их соответствующими идентификаторами.
В этом запросе перечислены заболевания, которые соответствуют как минимум одному симптому - болезни, которые соответствуют большинству симптомов, находятся сверху.
Если вы добавили уникальное ограничение для symptom
_id и disease_id
в analyze
, вы можете потерять DISTINCT
:
SELECT disease_id, COUNT(symptom_id)
FROM analyze
WHERE symptom_id IN ($symptom1, $symptom2, $symptom3)
GROUP BY disease_id
ORDER BY COUNT(symptom_id) DESC