Probleme de requete sql

sql -  
 sql -
Bonjour,



j'ai une requête :

$sql1="SELECT an_inst, cat_gene, dec_jur, count(cat_gene) AS cat_gene,
CASE when dec_jur='affaire gagné' then valeur as dec_jur1
CASE when dec_jur='affaire perdue' then valeur as dec_jur2,
CASE when dec_jur='désistement, non-lieux' then valeur as dec_jur3
FROM instances ";

avec l'erreur suivante :

Erreur de syntaxe près de 'as dec_jur1 CASE when dec_jur='affaire perdue' then valeur as dec_jur2, C'

Je vois pas trop comment la résoudre :s

1 réponse

funnycat Messages postés 153 Date d'inscription   Statut Membre Dernière intervention   65
 
Bonjour.
Lorsque vous effectuez des requête, n'hésitez pas à bien les formater pour mieux vous y retrouver (voir : https://sql.sh/774-indentation-code-sql ).
Essayez avec ceci, à priori ça devrait mieux fonctionner :
SELECT an_inst, cat_gene, dec_jur, count(cat_gene) AS cat_gene, 
CASE dec_jur 
WHEN 'affaire gagné'          THEN valeur AS dec_jur1 
WHEN 'affaire perdue'         THEN valeur AS dec_jur2
WHEN 'désistement, non-lieux' THEN valeur AS dec_jur3 
END
FROM instances


A savoir : les accents dans une requête c'est pas l'idéal. Personnellement je vous suggère d'utiliser un type TINYINT pour dec_jur et de mettre un commentaire pour vous y retrouver.

En espérant que cela vous aide.
Cordialement,
0
sql
 
Non toujours pas j'ai même essayé en rajoutant dec_jur=, avec des virgules mais pas moyen

CASE
WHEN dec_jur='affaire gagné' then valeur as dec_jur1
WHEN dec_jur='affaire perdue' then valeur as dec_jur2
WHEN dec_jur='désistement, non-lieux' then valeur as dec_jur3
END
FROM instances

l'erreur affiché c'est erreur de syntaxe

"pr?s de 'as dec_jur1 WHEN 'affaire perdue' then valeur as dec_jur2 WHEN 'désist' "
0
funnycat Messages postés 153 Date d'inscription   Statut Membre Dernière intervention   65
 
Bonjour.
En fait vous n'avez pas précisé ce que vous vouliez retourner. La requête ce ne serait pas ça par hasard :
SELECT an_inst, cat_gene, dec_jur, count(cat_gene) AS cat_gene, 
CASE dec_jur 
WHEN 'affaire gagné'          THEN dec_jur1
WHEN 'affaire perdue'         THEN dec_jur2
WHEN 'désistement, non-lieux' THEN dec_jur3
END AS valeur
FROM instances

S'il y a toujours une erreur, pouvez-vous préciser ce que vous souhaitez et à quoi ressemble la structure et les données de votre table.
Cordialement,
0
sql
 
Donc en gros j'ai déjà une requête qui marche :

$sql1="SELECT an_inst, cat_gene, dec_jur, count(cat_gene) AS cat_gene,

sum(CASE when cat_gene='administration et police' then 1 else 0 End) as cat_gene1,
sum(CASE when cat_gene='affaires foncières - domaine' then 1 else 0 End) as cat_gene2,
sum(CASE when cat_gene='collectivités territoriales et EPCI' then 1 else 0 End) as cat_gene3,
sum(CASE when cat_gene='nature - environnement' then 1 else 0 End) as cat_gene4,
sum(CASE when cat_gene='urbanisme - travaux' then 1 else 0 End) as cat_gene5,
sum(CASE when cat_gene='divers' then 1 else 0 End) as cat_gene6,

FROM instances
WHERE jur='tribunal administratif'
GROUP BY an_inst";

a celle-ci je cherche désespérément à afficher une ligne pour chaque année gagné perdue et desistement..

Histoire que ca me fasse :

année decision admi ...........
2000 gagné 12
2000 perdue 2
2000 desis 3

car pour le moment avec cette simple requête ca m'affiche toutes les décisions mais sans les différencier..

En esperant avoir été plus claire?
0