Descubra qual ID de grupo contém todos os atributos relevantes no SQL

Então, digamos que neste caso, o grupo que temos é um grupo de animais.

Digamos que tenho as seguintes tabelas:

animal_id | attribute_id | animal
----------------------------------
 1        |  1           | dog   
 1        |  4           | dog
 2        |  1           | cat
 2        |  3           | cat
 3        |  2           | fish
 3        |  5           | fish


id | attribute
------------------
 1 | four legs 
 2 | no legs
 3 | feline
 4 | canine
 5 | aquatic

Onde a primeira tabela contém os atributos que definem um animal e a segunda tabela controla o que é cada atributo. Agora, digamos que executamos uma consulta em alguns dados e obtemos a seguinte tabela de resultados:

attribute_id 
------------
     1
     4

Esses dados descreveriam um cão, já que é o único animal_id que possui os atributos 1 e 4. Quero poder obter de alguma forma o animal_id (que nesse caso seria 1) com base na terceira tabela, que é essencialmente uma tabela que já foi gerada e contém os atributos de um animal.

EDITAR

Portanto, a terceira tabela que tem 1 e 4 não precisa ser 1 e 4. Pode retornar 2 e 5 (para peixes) ou 1 e 3 (gato). Podemos assumir que seu resultado sempre corresponderá completamente a um animal, mas não sabemos qual deles.

questionAnswers(1)

yourAnswerToTheQuestion