cs_chamallow
Messages postés363Date d'inscriptionmercredi 18 mai 2005StatutMembreDernière intervention29 janvier 2007
-
22 mai 2006 à 15:41
cs_Malkuth
Messages postés268Date d'inscriptionsamedi 22 février 2003StatutMembreDernière intervention24 avril 2013
-
12 juin 2006 à 18:22
Bonjour,
Je cherche depuis un petit moment comment faire une certaine requpete mais je bloque
En fait, j'ai une table qui contient plusieurs champs dont un nombre de poses, un numéro de semaine et l'année tous deux associés à ce nombre de poses. Ce que je voudrais c'est faire le cumul de ce nombre de poses entre la plus vieille date et la plus récente, ce qui revient à faire le cumul du nombre de poses entre la plus petite semaine pr la plus petite année et la plus grande semaine de la plus grande année.
Et là je bloque, je vois plus comment faire : j'avais essayer entre la semaine la plus petite et la plus grande et l'année la plus petite et la plus grande, mais bien sûr ça ne donne pas ce que je souhaite, mais le cumul entre les deux semaines pour chaque année.
Quelqu'un voit-il une solution svp? Merci d'avance
cs_chamallow
Messages postés363Date d'inscriptionmercredi 18 mai 2005StatutMembreDernière intervention29 janvier 20071 23 mai 2006 à 13:37
Et bien en fait j'y suis arrivée :)
Ce que j'ai fait c'est que j'ai fait la somme des poses pour les dates qui se situent entre ma date de début et de fin, et pour transformer ma semaine et année en date, j'ai utilisé dateadd(day,semaine*7,1/1/annee) (en concaténant l'année avec la chaine '01/01' pour que je parte du 1er janvier de l'année en question, et je lui ajoute le nombre de jours nécessaire pour arriver à la bonne semaine, d'où le semaine*7).
crilun
Messages postés114Date d'inscriptionlundi 10 mai 2004StatutMembreDernière intervention17 octobre 2006 22 mai 2006 à 20:17
crilun
fait une concatenation de ton champ annee et semaine, et retransforme les en date tu as plein de fonction SQL pour ca,
tu recupere le 1er jour de ta semaine de depart et le denier jour de ta semaine de fin,
apres tu fais min() et max() pour tes champs dates concatener.
et tu fait pareil pour ta clause where.
mais pourquoi tu fais pas simplement un SUM() de toutes tes poses
car si tu prends entre la plsu vieille date et la plus recente
obligatoirement tu as tout les enregistrements?
cs_chamallow
Messages postés363Date d'inscriptionmercredi 18 mai 2005StatutMembreDernière intervention29 janvier 20071 23 mai 2006 à 08:03
Ok, j'avais carrément zappé cette solution ! Je vais essayer.
Et si je fait la somme de toutes les poses entre 2 dates, c'est pour pas avoir tous les enregistrements en fait, parce que c'est entre la plus vieille et récente date d'une commande (et pas de toutes!).
cs_chamallow
Messages postés363Date d'inscriptionmercredi 18 mai 2005StatutMembreDernière intervention29 janvier 20071 23 mai 2006 à 08:09
Euh petite précision, quand tu dis " fait une concatenation de ton champ annee et semaine", tu veux que je crées un nouveau champ dans la base, parce que je voulais éviter en fait de devoir en rajouter. Je voulais tout faire dans la requête.
Vous n’avez pas trouvé la réponse que vous recherchez ?
crilun
Messages postés114Date d'inscriptionlundi 10 mai 2004StatutMembreDernière intervention17 octobre 2006 23 mai 2006 à 11:56
crilun
non je veut dire dans la requete
SELECT
CAST(annee AS VARCHAR(4))+CAST(semaine AS VARCHAR(2)) AS ANNEESEMAINE
je dois partir en cours la, je te ferais un select ce soir qui te
renvoi la date du lundi de ta semaine pour ton lundi de la semaine de
depart et le vendredi pour ta semaine de fin.
cs_Malkuth
Messages postés268Date d'inscriptionsamedi 22 février 2003StatutMembreDernière intervention24 avril 20134 12 juin 2006 à 18:22
Salut,
En fait je pense que ce petit code serait suffisant le tout est dans la définition de la borne inférieur et supérieur, Je pense que c'est plus rapide car sans fonction suplémentaire, pas de probléme de premier jour de la semaine ou de premier jour de l'année. Si tu le test dis moi si ca va plus vite.
SELECT
SUM(Pose)
FROM
TABLE
WHERE
(Année >@AnneDebut OR (Année=@AnneDebut AND Semaine >=@SemaineDebut))
AND
(Année <@AnneFin OR (Année=@AnneFin AND Semaine <=@SemaineFin))
Biensûr on remplacera @AnneDebut,@SemaineDebut,@AnneFin,@SemaineFin par les valeurs qu'il faut...