par
heddicmi » 02 nov. 2005, 12:24
Salut les jeunes !
Voilà, jai voulu se matin faire 2 requêtes avec pour but de me faciliter la tache en évitant des taitements derrière...
En gros, j'ai une table qui va ressembler à ça :
Code : Tout sélectionner
TABLE_1 :
id ----- labo ---- dept ----------- valeur
1 ------- 01 ------ 01 --------------- 3
2 ------- 01 ------ 02 --------------- 2
3 ------- 01 ------ 03 --------------- 0
4 ------- 02 ------ 01 --------------- 4
5 ------- 02 ------ 02 --------------- 0
6 ------- 02 ------ 03 --------------- 0
.
.
.
1
Ma 1ère requête doit me compter le nombre d'enregistrement, par département, dont valeur>0. J'ai donc ma requête :
Code : Tout sélectionner
SELECT dept, COUNT(id)
FROM TABLE_1
WHERE valeur>0
GROUP BY dept
J'espère obtenir comme résultat :
Code : Tout sélectionner
dept ------ COUNT(id)
-01 ------------ 2
-02 ------------ 1
-03 ------------ 0
Mais au lieu de cela, j'obtiens :
Le département avec aucune ligne supèrieur à 0 n'est pas affiché.
Comment s'en sortir ?
2
Ma 2nde réquète, toujours dans un soucis de non traitement dans le code derrière, devait m'afficher, département pas département, le labo avec sa valeur triée par valeur décroissante, afin de déterminer un ordre dans les labos...
Du genre :
Code : Tout sélectionner
SELECT labo, valeur
FROM TABLE_1
WHERE dept="01"
ORDER BY valeur DESC
Mais j'aurais voulu rajouter une 3ème colonne de résultat, auto-incrémenté afin d'obtenir directement son rang (donc, ne pas avoir à compter le nombre de lignes avant d'arriver au labo souhaité)
Un résultat dans ce genre, pour le dept 01 :
Code : Tout sélectionner
labo ----------- valeur ----------- pos
02 --------------- 4 ---------------- 1
01 --------------- 3 ---------------- 2
Un résultat dans ce genre, pour le dept 02 :
Code : Tout sélectionner
labo ----------- valeur ----------- pos
01 --------------- 2 ---------------- 1
02 --------------- 0 ---------------- 2
Etc... Donc pos n'aurais simplement que 1, 2, 3, 4, 5, etc...
Comment s'en sortir ?
Merci à vous si vous avez des idées, je susi preneur

Salut les jeunes !
Voilà, jai voulu se matin faire 2 requêtes avec pour but de me faciliter la tache en évitant des taitements derrière...
En gros, j'ai une table qui va ressembler à ça :
[code]TABLE_1 :
id ----- labo ---- dept ----------- valeur
1 ------- 01 ------ 01 --------------- 3
2 ------- 01 ------ 02 --------------- 2
3 ------- 01 ------ 03 --------------- 0
4 ------- 02 ------ 01 --------------- 4
5 ------- 02 ------ 02 --------------- 0
6 ------- 02 ------ 03 --------------- 0
.
.
.[/code]
[size=150][color=orange][b]1[/b][/color][/size]
Ma 1ère requête doit me compter le nombre d'enregistrement, par département, dont valeur>0. J'ai donc ma requête :
[code]SELECT dept, COUNT(id)
FROM TABLE_1
WHERE valeur>0
GROUP BY dept[/code]
J'espère obtenir comme résultat :
[code]dept ------ COUNT(id)
-01 ------------ 2
-02 ------------ 1
-03 ------------ 0[/code]
Mais au lieu de cela, j'obtiens :
[code]dept ------ COUNT(id)
-01 ------------ 2
-02 ------------ 1[/code]
Le département avec aucune ligne supèrieur à 0 n'est pas affiché.
[b]Comment s'en sortir ?[/b]
[size=150][color=orange][b]2[/b][/color][/size]
Ma 2nde réquète, toujours dans un soucis de non traitement dans le code derrière, devait m'afficher, département pas département, le labo avec sa valeur triée par valeur décroissante, afin de déterminer un ordre dans les labos...
Du genre :
[code]SELECT labo, valeur
FROM TABLE_1
WHERE dept="01"
ORDER BY valeur DESC[/code]
Mais j'aurais voulu rajouter une 3ème colonne de résultat, auto-incrémenté afin d'obtenir directement son rang (donc, ne pas avoir à compter le nombre de lignes avant d'arriver au labo souhaité)
Un résultat dans ce genre, pour le dept 01 :
[code]labo ----------- valeur ----------- pos
02 --------------- 4 ---------------- 1
01 --------------- 3 ---------------- 2[/code]
Un résultat dans ce genre, pour le dept 02 :
[code]labo ----------- valeur ----------- pos
01 --------------- 2 ---------------- 1
02 --------------- 0 ---------------- 2[/code]
Etc... Donc pos n'aurais simplement que 1, 2, 3, 4, 5, etc...
[b]Comment s'en sortir ?[/b]
Merci à vous si vous avez des idées, je susi preneur :roll: