Re: [LA-discussions] requête mysql

[ Thread Index | Date Index | More linuxarverne.org/discussions Archives ]


J'ai lu rapidement et à mon avis un schema de ce type serait plus
simple à manipuler :

table livres : id / titre
table personnes : id / nom
table criteres : id / nom
table evaluations : id_livre / id_personne / id_critere / date

Et, je n'ai pas testé mais un truc du genre select count(id_critere)
FROM evalutations GROUP BY id_livre, id_critere devrait repondre
ensuite à la question



2009/5/23 KewlCat <kewlcat@xxxxxxx>:
> jean-luc boutin wrote:
>>
>> KewlCat a écrit :
>>>
>>> Rebonsoir !
>>>
>>> En fouillant dans la doc MySQL j'ai trouvé une utilisation détournée de
>>> la clause IN qui va bien nous servir :-)
>>> En effet, MySQL fait en sorte que la clause IN retourne 0 ou 1 en
>>> fonction de la présence d'une valeur dans la liste fournie.
>>> Atttention, détournement :
>>>
>>> SELECT Colonne1, SUM(Colonne2 IN ('NUL')), SUM(Colonne2 IN ('ASSEZ
>>> BON')), SUM(Colonne2 IN ('BON')), SUM(Colonne2 IN ('TRES BON')),
>>> SUM(Colonne2 IN ('EXCELLENT')) FROM Table1 GROUP BY Colonne1 ORDER BY
>>> Colonne1;
>>
>> Je viens de tester et ça marche avec comme nom de colonne SUM(Colonne2 IN
>> ('ASSEZ BON'))  SUM(Colonne2 IN ('BON')) etc.... et des 0 quand il n'y a pas
>> un type
>> d'evaluation correspondant à un titre. C'est ce que je voulais en une
>> seule requête.
>>
>> Merci mille fois.
>>>
>>> Et voilà ! Pas besoin de tableau de valeurs intermédiaire, la requête
>>> porte tous les résultats (sauf les valeurs de Colonne2, mais pour cette fois
>>> j'ai supposé qu'elles étaient connues et utilisables "en dur"). Dans le cas
>>> où les valeurs de Colonne2 ne sont pas connues à l'avance, il faudra faire
>>> une première requête à la recherche de DISTINCT Colonne2 puis générer la
>>> requête ci-dessus pour ensuite afficher les entêtes de tableau dans l'ordre
>>> dans lequel ils auront été récupérés par la seconde requête..
>>>
>>>  =^.^=
>>>
>>> ---
>>> Liste de discussions de LinuxArverne
>>> http://wiki.linuxarverne.org/listes_de_diffusion
>>>
>>
>>
>> ---
>> Liste de discussions de LinuxArverne
>> http://wiki.linuxarverne.org/listes_de_diffusion
>>
>
> Si c'est le nom des colonnes qui t'embête, tu peux les nommer en donnant
> l'alias derrière l'expression qu'elles retournent :
>
> SELECT Colonne1, SUM(Colonne2 IN ('NUL')) NUL, SUM(Colonne2 IN ('ASSEZ
> BON')) ASSEZ_BON, SUM(Colonne2 IN ('BON')) BON, SUM(Colonne2 IN ('TRES
> BON')) TRES_BON, SUM(Colonne2 IN ('EXCELLENT')) EXCELLENT FROM Table1 GROUP
> BY Colonne1 ORDER BY Colonne1;
>
> Content d'avoir pu te dépanner ;-)
>
> ---
> Liste de discussions de LinuxArverne
> http://wiki.linuxarverne.org/listes_de_diffusion
>
>

---
Liste de discussions de LinuxArverne
http://wiki.linuxarverne.org/listes_de_diffusion


Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/