ciao, io ho una struttura di questo tipo (abbreviata, tolgo i dati che non servono):

tabella prev:
id data
1 0808
2 0808
3 0809
4 0809
5 0810
6 0810

tabella pay:
id idPrev stato
1 1 0
2 1 0
3 1 1
4 2 0
5 2 1
6 2 1
7 3 1
8 3 1
9 4 1
10 4 1
11 5 1
12 5 1
13 5 1
14 6 0

dove, in pratica, pay.stato indica se il pagamento è ricevuto si o no.
La query che mi serve a me, dovrebbe restituirmi le date raggruppate (annomese decorrenza), due colonne:
una con il numero di fatture con TUTTI i pagamenti a stato = 1, l'altra con il numero delle fatture che non hanno tutti i pagamenti conclusi.

con i dati sopra, dovrei ottenere questo risultato:

data | fattureOK | fattureNo |
0810 | 1 | 1 |
0809 | 2 | 0 |
0808 | 0 | 2 |

come cavolo faccio?
è possibile?

io ho fatto delle prove:

Codice PHP:
SELECT
  prev
.id,
 ( 
SELECT COUNT(pay.idFROM pay WHERE pay.stato '0' AND pay.idPrev prev.id ) AS payNo,
 ( 
SELECT COUNT(pay.idFROM pay WHERE pay.stato '1' AND pay.idPrev prev.id ) AS payOk,
 ( 
SELECT COUNT(pay.idFROM pay WHERE pay.idPrev prev.id ) AS payTOT
FROM prev
INNER JOIN pay ON 
(pay.idPrev prev.id)
GROUP BY prev.id 
ma così ho riga per riga le fatture con il numero di pagamenti conclusi, da concludere e il totale (il raggruppamento per data mi sfracella i dati, mettendolo in quella query)

ho provato con:

Codice PHP:
SELECT
  prev
.data,
 ( 
SELECT
  COUNT
(prev.id)
  
FROM prev
  HAVING 
SELECT COUNT(pay.idFROM pay WHERE pay.stato '1' AND pay.idPrev prev.id ) = ( SELECT COUNT(pay.idFROM pay WHERE pay.idPrev prev.id )
 ) AS 
fattureOk,
 ( 
SELECT
  COUNT
(prev.id)
  
FROM prev
  HAVING 
SELECT COUNT(pay.idFROM pay WHERE pay.stato '0' AND pay.idPrev prev.id ) != 0
 
) AS fattureNo
FROM prev
INNER JOIN pay ON 
(pay.idPrev prev.id)
GROUP BY prev.data 
ma mi restituisce
data fattureOk fattureNo
0808 NULL 6
0809 6 NULL
0810 6 NULL

idee?