Besoin d'aide pour une requête SQL

romain_natiez Messages postés 179 Statut Membre -  
Tazounet Messages postés 12 Statut Membre -
Salut à vous
J'ai une base de donnée qui contient des noms de documents dans une table "CONSIGNE" chaque consigne a une date de création du format "JJ/MM/AAAA" et je dois faire une requête qui me donne le nombre de documents créés par année, comme je débute en SQL, je galère un peu...
Mon problème c'est que je doit extraire l'annnée de la date de création mais je n'ai pas trouvé d'info sur le net là dessus, est-ce faisable ?
Je travaille avec access.

Toute aide est la bienvenue et je remercie d'avance ceux qui prennent la peine de lire mon message.

13 réponses

dedale82 Messages postés 403 Statut Membre 283
 
Salut,
si c'est simplement une requete sql c'est : select * from nom_de_table where date>='01/01/annee' and date<='31-12-annee';
Si tu fais ca avec un formulaire php cf :
http://www.commentcamarche.net/forum/affich-811023-conseil-pour-creation-d%27un-site
1
Tazounet Messages postés 12 Statut Membre
 
Je ne pense pas que cela réponde à la question...
Ton exemple de requête dedale ne fais que retourner tous les documents d'une année...
Ce que veux Romain, c'est savoir combien de documents sont dénombrés et ce par année...
Et là c'est plus rusé...
Déja Romain dans ta requête tu fais un count sur un champ unique ensuite le truc c'est de faire un alias sur ton champ date en convertissant le type date longue en date avec année ou en récupérant les 4 derniers caractères peu importe le but étant de pouvoir faire un regroupement sur l'année.
Et avec ça tu devrais pouvoir récupérer le nombre total de documents par année :o)
0
romain_natiez Messages postés 179 Statut Membre 31
 
je vous remercie tous les deux !
ca fait vraiment plaisir de voir que desgens s'interressent et s'investissent dans les problèmes des autres !
(c'est la première fois que je demande de l'aide sur un forum!)
Je vais essayer vos propositions et je vous dirais quoi .

Merci encore !!!
0
romain_natiez Messages postés 179 Statut Membre 31
 
Dedale82, je suis allé sur le lien, mais j'ai pas tout compris,
le php, c'est quoi ? ca marche avec Access ?
Tazounet, pour
faire un alias sur le champ date en convertissant le type date longue en date avec année ou en récupérant les 4 derniers caractères, on fait comment ?
Désolé pour vous deux mais je galère, je connais que le VB 8-(
0
Tazounet Messages postés 12 Statut Membre
 
Bon alors pour récupérer l'année tu peux faire par exemple:
- Appelons MaDate ton champ au format JJ/MM/AAAA dans ta table MaTable.

SELECT SUBSTRING(CONVERT(VARCHAR(10),MaDate, 102),1,4) FROM MaTable

La fonction CONVERT(Format,Expr, Style) a 3 arguments:
- Format: Le type dans lequel tu souhaites convertir Expr.
- Expr: le champ ou expression à convertir
- Style: dans le cas présent le style de sortie pour une entrée de type DATETIME avec en sortie un VARCHAR est 102 -> yyyy.mm.dd

La fonction SUBSTRING(Expr,PositionDépart,Longueur) a 3 arguments:
- Expr : La chaine de caractère dans laquelle tu veux récupérer une partie
- PositionDépart : un entier correspondant à la position du 1er caractère que tu veux récupérer
-Longueur : un entier correspondant au nombre de caractère que tu veux récupérer à la suite.

Voilà :o)

Et si tu veux rajouter un alias alors il faut mettre qq chose comme ça :
SELECT SUBSTRING(CONVERT(VARCHAR(10),MaDate, 102),1,4) AS Annee FROM MaTable
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
romain_natiez Messages postés 179 Statut Membre 31
 
J'avais essayé ca :

SELECT COUNT(Nom_Fichier)
FROM CONSIGNE
GROUPBY Year(Date_Creation)

mais ca marche pa, j'ai trouivé un site avec toutes les fonctions SQL : http://sqlpro.developpez.com/SQL_AZ_F.htm
il a l'air pas mal.
je vais essayer ta technique, merci encore!
0
Tazounet Messages postés 12 Statut Membre
 
Mais de rien :)
J'ai testé sur une de mes bases pour compter le nombre d'enregistrement trier par année et ça fonctionne bien (mais faut pas oublier de rajouter le COUNT et le GROUP BY)

:o)

Bon courage
0
romain_natiez Messages postés 179 Statut Membre 31
 
le VARCHAR(10), c'est quoi exactement ?
car si je comprend bien c'est un format ?
0
Tazounet Messages postés 12 Statut Membre
 
Wép c'est une chaîne de caractère variable de 10 caractères maxi
0
romain_natiez Messages postés 179 Statut Membre 31
 
ok merci, mais ma requête :
SELECT COUNT(Nom_Fichier), SUBSTRING(CONVERT(VARCHAR(10),Date_Creation, 102),1,4) AS Annee
FROM CONSIGNE
GROUPBY Annee

elle marche pas 8-(
acces me dit qu'il y a une erreur ds la clause FROM et il surligne Annee dans le group by
0
romain_natiez Messages postés 179 Statut Membre 31
 
le groupby je devais l'écrire GROUP BY
mais il me dit que la fonction SUBSTRING est non définie dans l'expression
0
Tazounet Messages postés 12 Statut Membre
 
ah.... tu attaques une base ACCESS c'est ça ???
Peut être que ce n'est pas une instruction valide pour une base ACCESS :o)
Vi j'avais oublié le " " ds le GROUP BY désolé...
Atta je regarde comment ça se passe avec une base ACCESS
0
romain_natiez Messages postés 179 Statut Membre 31
 
j'ai trouvé !!!!
ca marche !!!
YOUHOUUUUUUUUUU!
voilà la requête
SELECT Year(C.Date_Creation) AS Annee, Count(C.Nom_Fichier) AS CompteDeNom_Fichier
FROM CONSIGNE AS C
GROUP BY Year(C.Date_Creation);

je suis hyper content! beuarhg!

merci encore pour tout!
0
Tazounet Messages postés 12 Statut Membre
 
Arf :o)))
Les requêtes en ACCESS :o) ya déjà tout de disponible :o)
0