euh, je suis pas sur d'avoir tout compris.
C'est quoi le p.type_id ?
sinon, tu peux pas utiliser le Count() dans la clause Where.
il faudrait faire une requete imbriquee :
select rand(d.id)
from defprod d, produits p
where d.id=p.type_id and d.exemplaires > (
select count(pr.id) from produits pr, defprod dfp
where pr.type_id=d.id)
mais à mon avis, ton analyse de départ pour le modèle de données n'est pas bonne parce que cette requete a l'air bien complexe pour ton utilisation...
De plus, il me semble que MySQL ne gère les requetes imbriquées.