Besoin d'aide pour une requête SQL
romain_natiez
Messages postés
179
Statut
Membre
-
Tazounet Messages postés 12 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.
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.
A voir également:
- Besoin d'aide pour une requête SQL
- Logiciel sql - Télécharger - Bases de données
- Jointure sql ✓ - Forum MySQL
- Requête sql pour afficher uniquement les fleurs dont le prix est strictement inférieur à 10 euros ✓ - Forum DS
- Sql (+) - Forum Programmation
- Quelle requête écrire pour demander au moteur de recherche de présenter de préférence les pages web traitant de tennis mais pas de tennis de table ✓ - Forum Android
13 réponses
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
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
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)
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)
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 !!!
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 !!!
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-(
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-(
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
- 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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!
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!
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
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
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
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
le groupby je devais l'écrire GROUP BY
mais il me dit que la fonction SUBSTRING est non définie dans l'expression
mais il me dit que la fonction SUBSTRING est non définie dans l'expression
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
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