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

Répondre à