Archives de la liste a​i​d​e​@p​a​h​e​k​o​.c​l​o​u​d​

Requete sql groupe de travail

Solidairnet Chôm'Actif

17/04/2017 14:18:02

Bonjour,
j'ai activé le champ "groupe_de_travail" qui correspond à ce que je
souhaite gérer.
Par contre c'est un champ numerique, et je n'ai  pas   compris sa logique
et donc encore moins comment faire des requetes, pour par exemple,
n'afficher que les membres pour lesquel la case "relations publiques" est
cochée

merci

Re: Requete sql groupe de travail

didier flourac

17/04/2017 18:13:08

Bonjour,
Si j'ai bien compris la logique.
Il n'y a qu'une zone numérique dans la base de donnée.
Cette zone est exprimée en binaire pour l'affichage.
Le tableau suivant vous permettra de comprendre la logique .
*bdd* *binaire* *valeurs*
0 0 rien n'est selectionné
1 1  la premiere valeur est selectionnée ( Télécoms)
2 10 la deuxieme valeur est selectionnée (Trésorerie)
3 11 la première et la 2eme valeurs sont selectionnées (Télécoms et
Trésorerie)
4 100 la troisième valeur est selectionnée (relations publiques)

​Par conséquent si vous voulez n'afficher que les membres pour lesquel la
case  "relations publiques"  ​est cochée il faut selectionner
groupe_travail=4 .
(select * from membres where groupe_travail=4)

​Cordialement Didier Flourac ​



2017-04-17 14:17 GMT+02:00 Solidairnet Chôm'Actif <solidairnet@gmail.com>:

> Bonjour,
> j'ai activé le champ "groupe_de_travail" qui correspond à ce que
je
> souhaite gérer.
> Par contre c'est un champ numerique, et je n'ai  pas   compris sa
logique
> et donc encore moins comment faire des requetes, pour par exemple,
> n'afficher que les membres pour lesquel la case "relations
publiques" est
> cochée
>
> merci
>
> --
> *Thierry MATTIO*
>
> *Conseiller Médiateur Numérique*
>

Re: Requete sql groupe de travail

Solidairnet Chôm'Actif

17/04/2017 22:52:40

Merci pour l'explication :-)
mais du coup pour moi ça peut être  (pour 4 cases cochables) si j'ai bien
compris  4,5,6,7,12,13,14,15 mais comme j'en ai 12 cochables....je ne suis
pas rendu :-)
Il y a une methode pour trouver les bonnes valeurs sans faire le tableau de
jenesaispascombien de lignes?
merci encore :-)
Thierry
4 100 la troisième v
5 101
6 110
7 111
8 1000
9 1001
10 1010
11 1011
12 1100
13 1101
14 1110
15 1111



Le 17 avril 2017 à 18:12, didier flourac <didier.flourac@gmail.com> a écrit
:

> Bonjour,
> Si j'ai bien compris la logique.
> Il n'y a qu'une zone numérique dans la base de donnée.
> Cette zone est exprimée en binaire pour l'affichage.
> Le tableau suivant vous permettra de comprendre la logique .
> *bdd* *binaire* *valeurs*
> 0 0 rien n'est selectionné
> 1 1  la premiere valeur est selectionnée ( Télécoms)
> 2 10 la deuxieme valeur est selectionnée (Trésorerie)
> 3 11 la première et la 2eme valeurs sont selectionnées (Télécoms et
> Trésorerie)
> 4 100 la troisième valeur est selectionnée (relations publiques)
>
> ​Par conséquent si vous voulez n'afficher que les membres pour lesquel
la
> case  "relations publiques"  ​est cochée il faut selectionner
> groupe_travail=4 .
> (select * from membres where groupe_travail=4)
>
> ​Cordialement Didier Flourac ​
>
>
>
> 2017-04-17 14:17 GMT+02:00 Solidairnet Chôm'Actif
<solidairnet@gmail.com>:
>
>> Bonjour,
>> j'ai activé le champ "groupe_de_travail" qui correspond à ce
que je
>> souhaite gérer.
>> Par contre c'est un champ numerique, et je n'ai  pas   compris sa
logique
>> et donc encore moins comment faire des requetes, pour par exemple,
>> n'afficher que les membres pour lesquel la case "relations
publiques" est
>> cochée
>>
>> merci
>>
>> --
>> *Thierry MATTIO*
>>
>> *Conseiller Médiateur Numérique*
>>
>
>

Re: Requete sql groupe de travail

BohwaZ/Garradin

17/04/2017 23:53:16

Hello,

les champs à choix multiple sont stockés sous forme binaire. Un peu de 
théorie sur le fonctionnement des opérations binaires te serait utile si 
tu veux faire des trucs complexes.

Si tu veux juste sélectionner par option en SQL, il te faut déjà la 
liste des options possibles avec leur numéro (ça commence à 0). Tu peux 
obtenir cela en faisant : SELECT valeur FROM config WHERE cle = 
"champs_membres";

Ça sera sous cette forme là :

[groupe_travail]
title = "Groupes de travail"
help = "Coucou"
editable = true
options[] = "Télécoms"
options[] = "Trésorerie"
options[] = "Relations publiques"
options[] = "Communication presse"
options[] = "Organisation d'événements"
options[] = "Présidents du monde"

Si tu veux les membres qui ont coché "Relations publiques" dans leur 
fiche, c'est la troisième option, mais on commence à compter à zéro 
(Télécoms = 0, Trésorerie = 1, etc.), c'est donc l'option numéro 2 :

SELECT * FROM membres WHERE groupe_travail & (1 << 2);

Remplacer "2" par le numéro de l'option s'il est différent. Ne pas 
toucher au "1" dans la requête.

Cordialement.