Petit soucis en SQL - SQL/NoSQL - Programmation
Marsh Posté le 20-02-2004 à 14:23:11
peut-être n'as tu que 9 mois où il y a des enregistrements avec 'demandé' ...
tu utilises quoi pour faire ton graphique ? excel ?
Marsh Posté le 20-02-2004 à 14:25:22
dalcap a écrit : |
oui je n'ai que 9 mois pour les demandes mais il me faut quand meme les 12
j'utilise access c'est des grahiques fait à partir de requete pour que ce soit fait automatiquement à l'ouverture d'access
Marsh Posté le 20-02-2004 à 14:28:32
ok, je ne sais pas si ça va marcher avec access, j'ai jamais fait de vba avec access...
j'imaginais un truc (avec excel) qui te permettrait d'afficher tes 3 premieres requetes en tableau, et ensuite de parcourir les mois et de faire une requete pour chaque mois égal au mois déjà présent dans le tableau...
Marsh Posté le 20-02-2004 à 14:31:00
faut pas que j'utilise excel, sinon ce serait trop simple
Marsh Posté le 20-02-2004 à 14:36:39
left outer join à un endroit de ta requête histoire d'émuler des "null" à la place des lignes manquantes.
Marsh Posté le 20-02-2004 à 15:32:43
pas aujourd'hui parce que je m'en vais là et je suis un peu pressée, je verrai ca lundi !
Marsh Posté le 20-02-2004 à 16:21:00
tu parts à 15h30, beh ça va...
sinon la méthode de MagicBuzz est la bonne
Marsh Posté le 23-02-2004 à 08:49:54
quelqu'un peut me dire ce qui ne va pas dans ma requete (j'ai pas trop l'habitude d'utiliser "left outer join" ) :
Code :
|
Marsh Posté le 23-02-2004 à 10:12:22
Salut
T'as quoi comme erreur avec ta requête ?
(qui me parait pas mal d'ailleurs ...)
Marsh Posté le 23-02-2004 à 10:13:13
j'ai pas d'erreur en fait, je veux récupérer tous les mois meme si y'a pas de valeur dans stan final mais j'en ai que 9 au lieu de 12 ...
d'ailleurs la requete a été modifié :
Code :
|
Marsh Posté le 23-02-2004 à 10:18:55
Et ça ça te donne quoi ?
SELECT Sum(STAN_FINAL.DUREE_Prévisionnelle) AS Heures_demandées, Format([STAN_final].[DATE_Début],"mmmm" ) AS Mois
FROM mois LEFT JOIN STAN_FINAL ON mois.mois= Format([STAN_final].[DATE_Début],"mmmm" )
WHERE (STAN_FINAL.TEMOIN_STAN="demande" or
STAN_FINAL.TEMOIN_STAN is null)
GROUP BY Format([STAN_final].[DATE_Début],"mmmm" );
Marsh Posté le 23-02-2004 à 10:46:39
c'est access qu'est tout pourri
a partir du moment ou tu fais un group by, il zappe les lignes ou le champ en question est null
Marsh Posté le 23-02-2004 à 10:47:49
ben forcément
spour ca que l'équivalent du isnull de sql server ca aurait été pas mal
Marsh Posté le 23-02-2004 à 10:48:57
ouais ... je vais me débrouiller autrement, on peut faire des join quand y'a plus de 2 tables à joindre ?
Marsh Posté le 23-02-2004 à 11:01:54
la voila :
select ha.mois, ha.heures_absence, hd.heures_demandées, he.heures_engagées
from heures_demandées hd
right join heures_absence ha on ha.mois=hd.mois
right join heures engagées he on he.mois=hd.mois;
Marsh Posté le 23-02-2004 à 11:12:18
c plutot rare de les faire comme ca
en général elles sont en inner join ou en left/right outer join
Marsh Posté le 23-02-2004 à 11:15:26
ben en fait access enlève le outer tout seul et le transorfe en left/right join tout court
Marsh Posté le 23-02-2004 à 12:37:20
Toute façon tu y arriveras, avec Access, même
si ça peut sembler bancal parfois, tu fais tout
ce que tu veux avec !
=> Autre essai
SELECT Sum(iif(STAN_FINAL.DUREE_Prévisionnelle is null,0,STAN_FINAL.DUREE_Prévisionnelle)) AS Heures_demandées, mois.mois AS Mois
FROM mois LEFT JOIN STAN_FINAL ON mois.mois= Format([STAN_final].[DATE_Début],"mmmm" )
WHERE (STAN_FINAL.TEMOIN_STAN="demande" or
STAN_FINAL.TEMOIN_STAN is null)
GROUP BY mois.mois;
Marsh Posté le 23-02-2004 à 12:54:20
c bon j'ai résolu mon pb d'une autre manière grace à toi.
merci
Marsh Posté le 23-02-2004 à 13:49:51
un autre soucis pour la meme requete comment je peux faire pour avoir le cumulé de tous les mois plutot que la somme pour le mois en cours ?
Marsh Posté le 23-02-2004 à 13:55:33
ben la somme tous mois confondus, ca revient a betement sommer le champ jesaisplusquoi de tous les enregistrements de ta table, non ? (moyennant les restrictions éventuelles supplémentaires)
Marsh Posté le 23-02-2004 à 13:56:43
je veux le cumul par mois
en gros je veux
janvier = janvier
février = février + janvier
mars = mars + février
...
Marsh Posté le 20-02-2004 à 13:32:03
Mon je m'explique :
J'ai une table contenant les champ suivant :
une durée prévisionnelle
une durée réalisée
une durée absence
une date
une temoin qui peut prendre les valeurs suivantes : inscrit, demandé, réalisé, absent
j'ai trois requetes différente :
une permettant de trouver les heures réalisées pour chaque mois: c la somme des heures de la colonne durée réalisée pour les témoin realise et inscrit
une autre permettant de trouver les heures engagées pour chaque mois : différence entre la somme des heures de la colonne durée_prévisionnelle et de la somme des heures durée absence et durée_réalisée avec le temoin inscrit
une permettant de trouver les heures d'absence pour chaque mois: somme des heures de la colonne durée absence pour les témoin realise, inscrit et absent
et enfin une permettant de trouvé les heures demandées pour chaque mois : somme de la colonne durée prévue avec le temoin demande
toutes ces requetes me renvoie une valeur pour chaque mois suaf la dernière qui me renvoit une valeur que pour 9 mois.
je dois faire une requete qui se sert de toutes celles présentées précédemment pour ensuite faire un graphique mais à cause de la requete qui ne renvoit que 9 mois je perds 3 mois en cours de route et ej ne vois pas comment résoudre ca.
si quelqu'un a une idée ce serait sympa
merci d'avance