Besoin d'aide pour une requête SQL

Fermé
romain_natiez Messages postés 179 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 22 février 2006 - 15 juin 2004 à 16:37
Tazounet Messages postés 12 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 1 juillet 2004 - 16 juin 2004 à 15:54
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 Date d'inscription jeudi 15 avril 2004 Statut Membre Dernière intervention 28 octobre 2008 282
15 juin 2004 à 16:41
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 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 1 juillet 2004
15 juin 2004 à 22:03
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 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 22 février 2006 31
16 juin 2004 à 13:51
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 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 22 février 2006 31
16 juin 2004 à 14:19
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 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 1 juillet 2004
16 juin 2004 à 14:47
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 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 22 février 2006 31
16 juin 2004 à 14:54
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 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 1 juillet 2004
16 juin 2004 à 14:59
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 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 22 février 2006 31
16 juin 2004 à 15:04
le VARCHAR(10), c'est quoi exactement ?
car si je comprend bien c'est un format ?
0
Tazounet Messages postés 12 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 1 juillet 2004
16 juin 2004 à 15:05
Wép c'est une chaîne de caractère variable de 10 caractères maxi
0
romain_natiez Messages postés 179 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 22 février 2006 31
16 juin 2004 à 15:12
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 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 22 février 2006 31
16 juin 2004 à 15:14
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 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 1 juillet 2004
16 juin 2004 à 15:32
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 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 22 février 2006 31
16 juin 2004 à 15:48
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 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 1 juillet 2004
16 juin 2004 à 15:54
Arf :o)))
Les requêtes en ACCESS :o) ya déjà tout de disponible :o)
0