|It's not tied to the animals table by name. If there are no states records for 'WA', it will **only** match on area records for 'OR' where it joins on name. Which is the desired effect. So bracket them, |
WHERE (states.area = 'WA' OR states.area = 'OR')
AND animals.name = states.name
and that should fix it.