prima di tutto c'è un errore
e mi sembra strano che non lo segnali, lo provato pure io e non lo segnala nemmeno a me
codice:
SELECT * FROM province , comuni
WHERE comuni.id_provincia = province.id
GROUP BY province.id
non puoi mettere nella select list più campi di quanti ne hai nella group by list, devono essere almeno li stessi.
comunque è normale che ti restituisca 30 e non 1 perchè il COUNT conta tutti i record nonostante li raggruppi per provincia. Per contare il numero di provincie devi contare solo le provincie che hanno id diverso così:
codice:
SELECT COUNT(DISTINCT province.id) FROM province , comuni
WHERE comuni.id_provincia = province.id
GROUP BY province.id