C'était aussi mon point de vue. D'après la documentation
openoffice.org, le résultat de COUNT est un integer. Mais apparemment
un integer qui ne connaît pas 0. Comme le fait que la requête 2
entraînait l'absence de résultat de la requête 3 j'ai pensé à null
(qui se propage). Mais j'ai essayé toutes les commandes sensées
traiter le null (pendant 2 jours :'( !) et pas moyen de trouver :'( Et
donc j'ai fini par me dire que si pas 0, si pas null... rien ? demain,
dès l'aube, à l'heure où blanchit la campagne... je teste les requêtes
modifiées par Docgranville :D

Le 21 avril 2010 22:45, ribotb <rib...@gmail.com> a écrit :
> Je n'ai pas encore examiné ta base mais à te lire et à priori  j'aurais dit
> que si les requêtes ne renvoient aucun tuple, le résultat du COUNT devrait
> être 0.
>
> Le 21/04/2010 22:35, Marie-Pierre CORONEL a écrit :
>>
>> Salut,
>>
>> et pourtant la solution de Docgranville passe par Ifnull (que j'ai
>> essayé sans succès, je comprendrais sûrement demain pourquoi -_-)
>>
>>
>> Le 21 avril 2010 22:30, ribotb<rib...@gmail.com>  a écrit :
>>
>>>
>>> Bonsoir Marie-Pierre,
>>>
>>> Je ne me suis pas penché sur ce "problème" (intéressant) mais je peux te
>>> dire en tout cas que le résultat ne peut pas être NULL. NULL n'est pas
>>> une
>>> valeur mais c'est un *état *qui indique que la valeur d'un élément est
>>> inconnue ou indéterminée.
>>>
>>> Bernard
>>>
>>> Le 21/04/2010 19:11, Marie-Pierre CORONEL a écrit :
>>>
>>>>
>>>> re bonjour,
>>>>
>>>> non non, je ne tiens pas à traiter les 3 régimes différemment, j'avais
>>>> essayé d'obtenir les calculs sur les 3 d'un coup mais je n'obtenais
>>>> jamais un chiffre juste -_- La seule fois où j'ai enfin obtenu un
>>>> chiffre juste c'est avec le système des 3 requêtes sauf quand j'ai
>>>> testé avec 0 occurence. Là je suis rentrée chez moi, mais je
>>>> regarderai tes requêtes demain.
>>>>
>>>> Je veux bien qu'on discute de la rigidité de ma base, parce que j'ai
>>>> essayé de faire le plus pérenne possible et donc le contraire :'( mais
>>>> bon...
>>>>
>>>> a+
>>>>
>>>> Le 21 avril 2010 19:04, Docgranville<docgranvi...@aol.com>    a écrit :
>>>>
>>>>
>>>>>
>>>>> Le 21/04/2010 18:04, Marie-Pierre CORONEL a écrit :
>>>>>
>>>>>
>>>>>>
>>>>>> hum j'ai voulu faire du ménage dans ci-joint... et j'ai supprimé le
>>>>>> mauvais fichier...
>>>>>>
>>>>>> nouveau lien
>>>>>> http://www.cijoint.fr/cjlink.php?file=cj201004/cijMs7dYvM.odb
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>> Re-bonjour Marie-Pierre,
>>>>>
>>>>> J'ai jeté un coup d'oeil rapide sur ta base ; peut-être aurais-je (à
>>>>> l'occasion) quelques réflexions à te faire partager sur sa conception
>>>>> qui
>>>>> me
>>>>> semble un peu trop complexe (ou rigide si tu préfères).
>>>>>
>>>>> En ce qui concerne ton problème particulier, je n'en connais pas
>>>>> véritablement la solution mais je pense (c'est déjà quelque chose) en
>>>>> connaître l'origine ; en réalité, je pense que le souci vient du fait
>>>>> que
>>>>> ta
>>>>> requête porte sur une table vide ( plus précisément sur une vue vide,
>>>>> celle
>>>>> générée par la "Regime_allocations_part2_CMSA") ; la clause ifnull
>>>>> permet
>>>>> de
>>>>> sauter un champ "null" dans un enregistrement mais, en l'occurrence, il
>>>>> n'y
>>>>> a carrément pas d'enregistrement (puisqu'aucun enregistrement de la
>>>>> table
>>>>> demandeurs ne correspond aux critères fixés dans cette fameuse requête
>>>>> "Regime_allocations_part2_CMSA".
>>>>>
>>>>> Pour éviter ça, je me suis dit que, peut-être, tu pourrais faire une
>>>>> requête
>>>>> (et éventuellement une vue) synthétisant, sur la période requise, le
>>>>> nombre
>>>>> d'allocataires de type "part1" pour chaque code d'allocation ; ta
>>>>> requête
>>>>> Regime_allocation_partie1_CMSA deviendrait :
>>>>> SELECT COUNT( "Demandeurs"."part1alloc" ) AS "nombre1",
>>>>> "Demandeurs"."part1alloc" FROM "Mediations_toutes_Selection_periode",
>>>>> "Demandeurs" WHERE "Mediations_toutes_Selection_periode"."demandeurs" =
>>>>> "Demandeurs"."no_demandeurs" GROUP BY "Demandeurs"."part1alloc"
>>>>> (en fait, je n'ai supprimé que la clause HAVING)
>>>>>
>>>>> Si on fait la même chose sur ta requête Regime_allocation_partie2_CMSA,
>>>>> elle
>>>>> devient :
>>>>> SELECT "Demandeurs"."part2alloc", COUNT( IFNULL(
>>>>> "Demandeurs"."part2alloc",
>>>>> 0 ) ) AS "nombre2" FROM "Mediations_toutes_Selection_periode",
>>>>> "Demandeurs"
>>>>> WHERE "Mediations_toutes_Selection_periode"."demandeurs" =
>>>>> "Demandeurs"."no_demandeurs" GROUP BY "Demandeurs"."part2alloc"
>>>>> (ici aussi, donc, siplement suppression de la clause HAVING).
>>>>>
>>>>> Avec ces requêtes, on obtient un tableau regroupant, pour chaque code
>>>>> d'allocation, le nombre d'allocataires sur la période.
>>>>>
>>>>> La dernière requête est modifiée un peu plus en profondeur ; il s'agit
>>>>> de
>>>>> la
>>>>> requête Regime_allocations_CMSA_Total, qui devient :
>>>>> SELECT "regimeCMSApart1"."part1alloc", ifnull("nombre1",0) as
>>>>> "nombre1",
>>>>> ifnull("nombre2",0) as "nombre2", ifnull("regimeCMSApart1"."nombre1",0)
>>>>> +
>>>>> ifnull("regimeCMSApart2"."nombre2",0) AS "Total" FROM "regimeCMSApart1"
>>>>> left
>>>>> join "regimeCMSApart2" on "regimeCMSApart1"."part1alloc" =
>>>>> "regimeCMSApart2"."part2alloc"
>>>>> (attention, cette requête porte sur les vues ; il ne faut donc pas
>>>>> oublier
>>>>> de les modifier, sinon, elle sont toujours avec la clause HAVING)
>>>>>
>>>>> Tu obtiens avec ça un tableau comportant une colonne énonçant les
>>>>> différents
>>>>> types d'allocations rencontrés (ici, 0, 1 et 2), une colonne
>>>>> mentionnant
>>>>> le
>>>>> nombre d'allocataires "partie 1" bénéficiant de ce type d'allocation
>>>>> (ou
>>>>> 0
>>>>> s'il n'y en a pas mais en l'occurrence, ce n'est pas possible), un
>>>>> colonne
>>>>> mentionnant le nombre d'allocataires "partie 2" bénéficiant de ce type
>>>>> d'allocation (ou 0, et ici c'est possible) et enfin une colonne
>>>>> totalisant
>>>>> les deux chiffres précédents.
>>>>>
>>>>> Je pense que, dans l'esprit, ça ressemble à ce que tu veux ; ensuite,
>>>>> si
>>>>> tu
>>>>> veux avoir une requête avec uniquement tel ou tel type d'allocation, tu
>>>>> peux
>>>>> parfaitement pointer sur cette dernière requête et en extraire
>>>>> "nombre1"
>>>>> et
>>>>> "noùmbre2" qui seront toujours renseignés (puisque le ifnull est
>>>>> utilisé
>>>>> pour créer cette requête).
>>>>>
>>>>> On pourra en re-discuter un peu plus tard si tu veux.
>>>>>
>>>>> A+
>>>>>
>>>>>
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: users-unsubscr...@fr.openoffice.org
>>>>> For additional commands, e-mail: users-h...@fr.openoffice.org
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscr...@fr.openoffice.org
>>>> For additional commands, e-mail: users-h...@fr.openoffice.org
>>>>
>>>>
>>>>
>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscr...@fr.openoffice.org
>>> For additional commands, e-mail: users-h...@fr.openoffice.org
>>>
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscr...@fr.openoffice.org
>> For additional commands, e-mail: users-h...@fr.openoffice.org
>>
>>
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@fr.openoffice.org
> For additional commands, e-mail: users-h...@fr.openoffice.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@fr.openoffice.org
For additional commands, e-mail: users-h...@fr.openoffice.org

Répondre à