Probleme de requete sql

Fermé
sql - 31 mai 2013 à 09:26
 sql - 3 juin 2013 à 14:54
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 jeudi 12 février 2009 Statut Membre Dernière intervention 10 mars 2019 65
31 mai 2013 à 14:08
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
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 jeudi 12 février 2009 Statut Membre Dernière intervention 10 mars 2019 65
3 juin 2013 à 13:45
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
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