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

Requête SQL

garreau.serge at yahoo.fr via aide

11/01/2024 11:21:32

Bonjour à tous,
Quasi débutant SQL, je ne parviens pas à trouver comment rédiger une requête pour
faire apparaitre en clair les valeurs d'un champ de type "sélecteur à choix
multiples".Exemple : j'ai un champ "moyen de règlement" qui peut
prendre les valeurs "Chèque" ou "Virement". Cela se traduit dans la
table par les valeurs 1 ou 2.Comment éditer les valeurs en clair ?

Merci de votre aide.Bonne journée,

Serge

Requête SQL

lesanges at zaclys.net via aide

11/01/2024 13:51:16

Le 11/01/2024 à 11:20, garreau.serge at yahoo.fr via aide a écrit :
> Bonjour à tous,
> 
> Quasi débutant SQL, je ne parviens pas à trouver comment rédiger une requête

> pour faire apparaitre en clair les valeurs d'un champ de type
"sélecteur à choix 
> multiples".
> Exemple : j'ai un champ "moyen de règlement" qui peut prendre les
valeurs 
> "Chèque" ou "Virement". Cela se traduit dans la table par les
valeurs 1 ou 2.
> Comment éditer les valeurs en clair ?

Est-ce qu'un truc comme ceci répond à la question ?

SELECT
CASE moyen
     WHEN 1 THEN "Chèque"
     WHEN 2 THEN "Virement"
END AS "Moyen de règlement"
FROM table

en supposant que le champ s'appelle moyen...


Jean-Christophe Engel

Requête SQL

BohwaZ/Paheko

11/01/2024 16:03:59

> Est-ce qu'un truc comme ceci répond à la question ?
> 
> SELECT
> CASE moyen
>      WHEN 1 THEN "Chèque"
>      WHEN 2 THEN "Virement"
> END AS "Moyen de règlement"
> FROM table

C'est plus compliqué, la valeur est stockée sous forme de bits :
https://fr.wikipedia.org/wiki/Op%C3%A9ration_bit_%C3%A0_bit

Il faudrait plutôt quelque chose comme ceci :

CASE WHEN moyen & (1 << 0) THEN "Oui" ELSE NULL END AS choix_1,
CASE WHEN moyen & (1 << 1) THEN "Oui" ELSE NULL END AS choix_2,
CASE WHEN moyen & (1 << 2) THEN "Oui" ELSE NULL END AS choix_3,
etc.

C'est pour ça qu'il n'est pas possible de restituer cette valeur en
dehors d'une recherche avancée.

Requête SQL

garreau.serge at yahoo.fr via aide

11/01/2024 18:26:58

Un grand merci ainsi qu'à Jean-Christophe pour avoir pris le temps de répondre.Ce
n'est pas très "sexy" mais au moins çà a le mérite de répondre à la
question :

SELECT moyen_de_reglement_cotisation as "Code",
CASE WHEN moyen_de_reglement_cotisation & (1 << 0) THEN "Chèque" ELSE
NULL END AS choix_1,
CASE WHEN moyen_de_reglement_cotisation & (1 << 1) THEN "Virement"
ELSE NULL END AS choix_2,
COUNT(moyen_de_reglement_cotisation) as Nombre
FROM users
group by moyen_de_reglement_cotisation
N'y a-t-il pas de solution pour que les valeurs en clair du sélecteur figurent dans
la même colonne ?

Bonne soirée,

Serge
 

    Le jeudi 11 janvier 2024 à 16:03:50 UTC+1, BohwaZ/Paheko <bohwaz@paheko.cloud>
a écrit :  
 
 > Est-ce qu'un truc comme ceci répond à la question ?
> 
> SELECT
> CASE moyen
>      WHEN 1 THEN "Chèque"
>      WHEN 2 THEN "Virement"
> END AS "Moyen de règlement"
> FROM table

C'est plus compliqué, la valeur est stockée sous forme de bits :
https://fr.wikipedia.org/wiki/Op%C3%A9ration_bit_%C3%A0_bit

Il faudrait plutôt quelque chose comme ceci :

CASE WHEN moyen & (1 << 0) THEN "Oui" ELSE NULL END AS choix_1,
CASE WHEN moyen & (1 << 1) THEN "Oui" ELSE NULL END AS choix_2,
CASE WHEN moyen & (1 << 2) THEN "Oui" ELSE NULL END AS choix_3,
etc.

C'est pour ça qu'il n'est pas possible de restituer cette valeur en
dehors d'une recherche avancée.

Requête SQL

BohwaZ/Paheko

11/01/2024 20:29:42

> N'y a-t-il pas de solution pour que les valeurs en clair du sélecteur
> figurent dans la même colonne ?

Je viens de réfléchir un peu et de trouver une solution en rajoutant
deux fonctions SQL spécifiques à Paheko (qui ne marcheront donc qu'à
l'intérieur de Paheko) :

* print_dynamic_field('nom_du_champ', valeur) : affiche la valeur
  du champ de la fiche membre, le premier paramètre doit être le nom du
  champ entre guillemets, le second paramètre étant la valeur, donc le
  nom de la colonne
* match_dynamic_field('nom_du_champ', valeur, 'valeur à chercher'[,
  'seconde valeur à chercher',...]) : permet de ne lister que les
  lignes dont le champ en premier paramètre correspond à une ou des
  valeurs passées en 3ème paramètre et suivants

Exemples :

SELECT print_dynamic_field('moyen_paiement', u.moyen_paiement)
 FROM users AS u
 WHERE u.moyen_paiement IS NOT NULL;

SELECT print_dynamic_field('moyen_paiement', u.moyen_paiement)
 FROM users AS u
 WHERE match_dynamic_field('moyen_paiement', u.moyen_paiement,
 'Espèces');


J'ai posté une doc plus complète ici :
https://paheko.cloud/fonctionnalites-sql-supplementaires

En espérant que ça réponde au besoin :)

Requête SQL

garreau.serge at yahoo.fr via aide

13/01/2024 11:15:12

Merci Bohwaz, c'est vraiment très sympa.
Hélas, pas vraiment de compétence SQL, je n'arrive pas à transcrire ce que tu
préconises, soit dans ton mail, soit dans la doc plus complète.
Si ce n'est pas abusé...
Ma requête :SELECT print_dynamic_field('moyen_de_reglement_cotisation',
u.moyen_de_reglement_cotisation)
FROM users as u
WHERE match_dynamic_field('moyen_de_reglement_cotisation',
u.moyen_de_reglement_cotisation, 'Virement', 'Chèque')
Le message d'erreur :Erreur dans la requête : The value "" is not an
integer
[]
Le "print_dynamic_fiels" fonctionne bien, mais rien à faire pour le
"match_dynamic_field.
Encore merci.
Bonne journée,

Serge
 

    Le jeudi 11 janvier 2024 à 20:29:33 UTC+1, BohwaZ/Paheko <bohwaz@paheko.cloud>
a écrit :  
 
 > N'y a-t-il pas de solution pour que les valeurs en clair du sélecteur
> figurent dans la même colonne ?

Je viens de réfléchir un peu et de trouver une solution en rajoutant
deux fonctions SQL spécifiques à Paheko (qui ne marcheront donc qu'à
l'intérieur de Paheko) :

* print_dynamic_field('nom_du_champ', valeur) : affiche la valeur
  du champ de la fiche membre, le premier paramètre doit être le nom du
  champ entre guillemets, le second paramètre étant la valeur, donc le
  nom de la colonne
* match_dynamic_field('nom_du_champ', valeur, 'valeur à chercher'[,
  'seconde valeur à chercher',...]) : permet de ne lister que les
  lignes dont le champ en premier paramètre correspond à une ou des
  valeurs passées en 3ème paramètre et suivants

Exemples :

SELECT print_dynamic_field('moyen_paiement', u.moyen_paiement)
 FROM users AS u
 WHERE u.moyen_paiement IS NOT NULL;

SELECT print_dynamic_field('moyen_paiement', u.moyen_paiement)
 FROM users AS u
 WHERE match_dynamic_field('moyen_paiement', u.moyen_paiement,
 'Espèces');


J'ai posté une doc plus complète ici :
https://paheko.cloud/fonctionnalites-sql-supplementaires

En espérant que ça réponde au besoin :)

Requête SQL

BohwaZ/Paheko

13/01/2024 13:27:23

> Erreur dans la requête : The value "" is not an integer []
> Le "print_dynamic_fiels" fonctionne bien, mais rien à faire pour le
> "match_dynamic_field. Encore merci. Bonne journée,

Effectivement la fonction ne s'attendait pas à recevoir une valeur NULL
(aucun choix sélectionné), j'ai corrigé, ça devrait être bon :)

Requête SQL

garreau.serge at yahoo.fr via aide

13/01/2024 14:57:34

Super !
... mais je n'arrive pas à utiliser la fonction "COUNT" avec cette
requête...
Le casse... pieds !

Serge
 

    Le samedi 13 janvier 2024 à 13:48:49 UTC+1, BohwaZ/Paheko <bohwaz@paheko.cloud>
a écrit :  
 
 > Erreur dans la requête : The value "" is not an integer []
> Le "print_dynamic_fiels" fonctionne bien, mais rien à faire pour le
> "match_dynamic_field. Encore merci. Bonne journée,

Effectivement la fonction ne s'attendait pas à recevoir une valeur NULL
(aucun choix sélectionné), j'ai corrigé, ça devrait être bon :)