SELECT a.login
FROM account a
JOIN transactions t ON a.id = t.account_id
JOIN game g ON t.game_id = g.id
JOIN company c ON c.id = g.Developer
GROUP BY a.login
HAVING !SUM( c.country != 'USA' OR YEAR(g.Release_date) MOD 2 )
Т.е. сперва собираем всю информацию в одну кучу, а потом для каждого логина считаем количество игр, у которых либо страна не штаты, либо год нечётный, и оставляем лишь записи, где это количество нулевое.
Как работает?
Если в данной совокупной записи страна - штаты, то
c.country != 'USA' есть FALSE, что в числовом контексте есть ноль, а иначе TRUE и соответственно единица.
Если в данной совокупной записи год чётный, то
YEAR(g.Release_date) MOD 2 есть ноль, а иначе единица.
Итого в скобках получаем единицу, если хотя бы одно из условий TRUE.
Далее - суммируем все единицы, фактически подсчитывая количество отдельных неподходящих под критерий записей для логина.
Ну и затем инвертируем (восклицательный знак - это оператор NOT). Соответственно если сумма ненулевая, получаем после инверсии ноль, который интерпретируется как FALSE, а если нулевая, то после инверсии получаем единицу, которая TRUE.