Bonjour,

j'ai beau chercher sur google net sur le forum, je n'arrive pas à trouver la bonne requête à faire.


Voici le descriptif de la table sur lequel je veux travailler:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
id	1	0	NO	int	10	0	
titre	2	''	NO	varchar			
date_pub	3	current_timestamp()	NO	timestamp			
texte	4		NO	text			
pj_1	5	NULL	YES	varchar			
pj_2	6	NULL	YES	varchar			
pj_3	7	NULL	YES	varchar			
is_enabled	8		NO	tinyint	3	0	
id_user	9	0	NO	int	10	0	
id_instance	10	0	YES	int	10	0

je cherche a faire une requête qui compte le nombre colonne pj_1,pj_2e t pj_3 qui soient not null pour un id précis.



j'ai essayé de me baseé sur les réponse :
https://www.developpez.net/forums/d1...-count-select/ et https://www.developpez.net/forums/d2...s-same-values/

mais je n'obtient des erreurs ou alors un resultat non pertinant

par exemple la requete faite omme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
select sum 
( case when PJ_1 is not null then 1 else 0 end ) as nombre1
from news
where id=56)
union all
(case when PJ_2 is not null then 1 else 0 end ) as nombre2
from news
where id=56
)
;
me renvoie l'erreur suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')
union all
(case when PJ_2 is not null then 1 else 0 end ) as nombre2
from news' at line 4
j'ai réussi a faire la requete suivante:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
select count(case when pj_1 is not null then 1 end),
count(case when pj_2 is not null then 1 end),
count(case when pj_3 is not null then 1 end)
from news
where id =56
;
cela me renvoi le résultat suivant:

alors que je voudrais avoir 3 comme résultat.

j’espère que mon descriptif de ma demande est assez claire.


avez vous une idée comment je peux corriger mes erreurs?

merci par avance pour votre aide.