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

  1. funnycat Messages postés 164 Statut Membre 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
    1. 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
    2. funnycat Messages postés 164 Statut Membre 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
    3. 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