Généralement, si vous devez avoir une ligne vide retournée..
Si votre requête d'origine est
select a,b,c from tbl
Vous pouvez la transformer en sous-requête
select t.a,t.b,t.c
from (select 1 as adummy) a
left join (
select a,b,c from tbl -- original query
) t on 1=1
Ce qui garantit que la requête aura toujours un nombre de lignes d'au moins un.