codice:
select idprev,
if(count(stato)-sum(if(stato=1,1,0))>0,0,1) as state
from pay
group by idprev
Con questa query, dalla tabella pay, seleziono ogni singolo idprev, conto quanti record ci sono per ciascuno di essi,quanti hanno stato =1 ed eseguo la differenza.
A seconda che la differenza sia maggiore o uguale a zero assegno a ciascun idprev valore 0 oppure 1. A questo punto faccio una join con l'altra tabella, raggruppo per data e conto quante hanno stato zero oppure uno. Spero di essere stato chiaro.