Bonjour ,

J'ai une Table Article (simplifiée)
ARTICLE
CODE_ARTICLE INTEGER,
LIBELLE VARCHAR(30),
GRILLE SMALLINT // de 0 à 99 les codes 0,1,90..99 sont réservés
..
et une table GRILLES (de pointure ou de taille)
GRILLES
ID_GRILLE SMALLINT,
CODE_GRILLE VARCHAR(5),
INTITULE_GRILLE VARCHAR(30)
...
je veux empêcher l'édition/suppression des codes réservé (merci triggers)
mais surtout , lors de l'affichage de la liste des grilles je veux indiquer si c'est possible ou non

pour cela je fait cette requête

Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
WITH U AS (SELECT GRILLE,COUNT(*) as N FROM ARTICLE
                    GROUP BY 1)
 
SELECT ID_GRILLE,CODE_GRILLE,LIBELLE_GRILLE,
CASE ID_GRILLE 
  WHEN 0 THEN 1
  WHEN 1 THEN 1
  WHEN 91 THEN 1
  WHEN 92 THEN 1
  WHEN 93 THEN 1
  WHEN 94 THEN 1
  WHEN 95 THEN 1
  WHEN 96 THEN 1
  WHEN 97 THEN 1
  WHEN 98 THEN 1
  WHEN 99 THEN 1
  ELSE COALESCE(U.N,0) 
END AS EDITABLE
FROM GRILLES LEFT JOIN U ON ID_GRILLE=U.GRILLE
ORDER BY 1

J'aurais voulu simplifier la partie CASE WHEN
mais un

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
CASE
WHEN (ID_GRILLE<2) THEN 1
WHEN (ID_GRILLE<91) THEN 1
ELSE COALESCE(U.N,0)
END
ne fonctionne pas (test avec fb 2.1 donne "token unknown <")

Une solution ?