SELECT pets.id, pets.nome, pets.tipo, pets.observacao, clientes.id as donoId, clientes.nome as donoNome, clientes.cpf as donoCpf FROM clientes LEFT JOIN pets ON pets.donoId = clientes.id
SELECT pets.id, pets.nome, pets.tipo, pets.observacao, clientes.id as donoId, clientes.nome as donoNome, clientes.cpf as donoCpf FROM clientes LEFT JOIN pets ON pets.donoId = clientes.id
Desta forma, irá mostrar todos os pets, mesmo que os que não tem correspondência com a tabela de clientes. Quando isso ocorrer, será mostrado como NULL o cliente daquele pet.
Acabaei invertendo as tabelas, mas como na tabela de pets tem o donoId isso acabaria não acontecendo. Certo?