Below is the list of tables from the database along with their columns and datatype. Need to generate an accurate SQL query for the question.
Only use the columns present in the respective table. Only use the columns which are required to generate the SQL query. Only use table joins if required and not otherwise.

### Tables ###
TABLE: CREATE TABLE Allergy_Type ( Allergy VARCHAR, allergytype VARCHAR )
TABLE: CREATE TABLE Has_allergy ( Allergy VARCHAR )
TABLE: CREATE TABLE Student ( age VARCHAR, StuID VARCHAR )

### Question ###
Find the number of students who are older than 18 and do not have allergy to either food or animal.

### Accurate SQL ###

SELECT COUNT(*) FROM Student WHERE age > 18 AND NOT StuID IN (SELECT StuID FROM Has_allergy AS T1 JOIN Allergy_Type AS T2 ON T1.Allergy = T2.Allergy WHERE T2.allergytype = "food" OR T2.allergytype = "animal")