[SQL] Conseils pour une requête

Petit nouveau ! | 3 Messages

02 mai 2007, 10:10

Salut a tous,

J'ai depuis qques jours un souci sur une requête et ca me rend un peu fou, j'avoue...

Je travaille sur une base de données SQL Server. Ces données sont utilisés ensuite dans une application MS Access...

Voila un peu le resultat que je cherche a avoir

Image

Et j'ai donc besoin de CONSEIL POUR LA SUITE PARCE QUE JE NE VOIS PAS COMMENT FAIRE LE RAPPROCHEMENT ENTRE LES 2...

J'ai deja fait la 1re partie de la requete :

Code : Tout sélectionner

SELECT tbl_ms_set_steps.MS_PROJ_START as 'DateStart', tbl_ms_set_steps.MS_PROJ_END as 'DateEnd', tbl_ms_set_steps.est_time as 'Montant', datediff(month,tbl_ms_set_steps.MS_PROJ_START,tbl_ms_set_steps.MS_PROJ_END) AS 'Duree_en_mois', tbl_ms_set_steps.est_time/datediff(month,tbl_ms_set_steps.,tbl_ms_set_steps.MS_PROJ_END) AS 'Resultat' FROM CRM_1.dbo.tbl_ms_set_steps tbl_ms_set_steps WHERE datediff(month,tbl_ms_set_steps.MS_PROJ_START,tbl_ms_set_steps.MS_PROJ_END) <> 0 AND tbl_ms_set_steps.est_time <> 0
J'ai besoin de conseils pour la suite !
Merci d'avance...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

02 mai 2007, 11:54

A part avec une procédure stockée ou une fonction, je vois difficilement comment tu pourrais multiplier ton nombre d'enregistrement par le nombre de mois que tu as calculé :-k

La seule façon que je vois pour faire ça sans passer par une proc, c'est de croiser avec une table contenant tes dates, ce qui te multiplierait le nombre d'enregistrements par autant de dates comprises dans ta période...

HTH
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Invité
Invité n'ayant pas de compte PHPfrance

02 mai 2007, 16:10

Salut merci de ta reponse (j'avoue que j'ai mis un peu de temps a decrypter ton message :lol:

Pour le moment, je n'ai pas les droits de creer de procedure dans ma base de donnees...

Ce serait donc selon toi, la seule solution ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

02 mai 2007, 16:43

Il y en a peut être d'autre, mais à priori, je ne vois pas trop comment à partir d'un seul enregistrement tu pourrais en générer 6 sans boucle (puisque pas de proc). Pour l'instant je vois donc pas d'autre solution que de croiser avec une autre table ou vue pour pouvoir multiplier les résultats .. mais les autres auront peut être d'autres idées :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 3 Messages

03 mai 2007, 11:43

Ca y est , jai les droits de creer des procedures stockés dans ma base de données (apres qques echanges de mail stressants et coriaces avec mon responsable ) :x :lol:

Je suis maintenant un peu bloqué sur la procedure a creer...
J'a pas encore bien compris le but de creer une procedure stockée dans mon exemple... et surtout comment l'utliser par la suite dans mon exemple et pour regler mon probleme.

Je suis debutant dans la creation de procedure stockée sur SQL Server en fait..

Petit nouveau ! | 3 Messages

03 mai 2007, 14:53

En fin de compte, j'ai trouve un tutorial qui peut aider...

Je mets un lien pour les gars qui ont le meme probleme : http://sqlpro.developpez.com/cours/gestiontemps/

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

03 mai 2007, 15:38

En fait pour toi, tout l'intérêt de la procédure est de pouvoir faire une boucle pour gérer les dates que tu n'as pas (les mois entre tes deux dates).
Il te suffit ainsi d'exécuter la requête que tu as donné ci dessus pour récupérer tes données et ton nombre de mois, puis de boucler sur le nombre de mois calculé pour faire un affichage ou une insertion en ajoutant à chaque fois un mois à la date de départ :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...