Имейте в виду, что SELECT может проверять только одну строку за раз.Оба этих запроса действуют так, как будто вы можете обнаружить 1
и 3
одновременно (например), что невозможно.
Чтобы рассмотреть несколько строк одновременно, вы можете объединить две отдельные копиитаблицы или попробуйте группировку следующим образом:
SELECT diseases.*
FROM diseases
INNER JOIN diseases_symptoms ON (disases_symptoms.disease_id = diseases.disease_id)
GROUP BY diseases.disease_id
HAVING SUM(IF(symptoms = 1 OR symptoms = 2, 1, 0) > 0 AND SUM(IF(symptoms = 3 OR symptoms = 4, 1, 0) > 0