or if you've to do it in one update use
UPDATE a
SET a.Frogs=CASE WHEN FrogsCnt > 0 THEN 'True' ELSE 'False' END,
a.Dogs = CASE WHEN DogsCnt > 0 THEN 'True' ELSE 'False' END,
a.Cats = CASE WHEN CatsCnt > 0 THEN 'True' ELSE 'False' END
FROM AnimalsNamedJohnTable a
CROSS JOIN (
SELECT SUM(FrogsCnt) AS FrogsCnt,
SUM(DogsCnt) AS DogsCnt,
SUM(CatsCnt) AS CatsCnt
FROM
(SELECT COUNT(*) AS FrogCnt,CAST(0 AS int) AS DogsCnt,CAST(0 AS int) AS CatsCnt
FROM FrogsTable WHERE NamesColumn = 'john'
UNION ALL
SELECT 0,COUNT(*),0
FROM DogsTable WHERE NamesColumn = 'john'
UNION ALL
SELECT 0,0,COUNT(*)
FROM CatsTable WHERE NamesColumn = 'john'
)t
)r
------------------------------------------------------------------------------------------------------
SQL Server MVP
http://visakhm.blogspot.com/