select
disease_name
from
disease
where
disease_id=
(select disease_id from disease_symptom where
disease.disease_id=disease_symptom.dise
Breaking your query down, you have
Main query:
select disease_name from disease where disease_id=
Subquery 1:
select disease_id from disease_symptom where
disease.disease_id=disease_symptom.disease_id AND
symptom_id=
Sub query 2:
select symptom_id from symptom where symptom.symptom_id=disease_symptom.symptom_id
AND symptom_name='fever' OR symptom_name='head ache'
Since you are using equal signs, the subqueries cannot return multiple items. It looks like sub query 2 has a greater chance to return 2 items due to the OR being used. You may wish to try IN clause such as WHERE symptom_id IN (sub-query2) with WHERE disease_id IN (sub-query1)