{Access} Code SQL
Fermé
hadrianovich
Messages postés
30
Date d'inscription
vendredi 7 août 2009
Statut
Membre
Dernière intervention
25 septembre 2009
-
10 août 2009 à 15:49
moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 - 12 août 2009 à 16:48
moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 - 12 août 2009 à 16:48
A voir également:
- {Access} Code SQL
- Code asci - Guide
- Code puk bloqué - Guide
- Code telephone oublié - Guide
- Code activation windows 10 - Guide
- Code gta 4 ps4 - Guide
14 réponses
moderno31
Messages postés
870
Date d'inscription
mardi 23 juin 2009
Statut
Membre
Dernière intervention
8 août 2012
92
10 août 2009 à 17:20
10 août 2009 à 17:20
HEllo,
Essaye de voir si UNION ou UNION ALL fonctionne avec access.
Entre chaque bout de requete tu met ça.
Par contre il s'agit de la meme table à des dates différentes.
sinon Je ne comprends pas vien ce que tu veux faire.
Essaye de voir si UNION ou UNION ALL fonctionne avec access.
Entre chaque bout de requete tu met ça.
Par contre il s'agit de la meme table à des dates différentes.
sinon Je ne comprends pas vien ce que tu veux faire.
hadrianovich
Messages postés
30
Date d'inscription
vendredi 7 août 2009
Statut
Membre
Dernière intervention
25 septembre 2009
10 août 2009 à 17:37
10 août 2009 à 17:37
Salut!!
Merci de ta réponses j'ai déjà essayé mais ça ne marche pas...
En gros ce que je désire est d'avoir un tableau d'une seule ligne avec pour chaque mois le nombre de devis c'est pour ca que je les ai regroupé par date dans mon code sql mais pour l'instant je suis obligé de faire une requête pour chaque mois et de les regrouper après...
Hadrien
Merci de ta réponses j'ai déjà essayé mais ça ne marche pas...
En gros ce que je désire est d'avoir un tableau d'une seule ligne avec pour chaque mois le nombre de devis c'est pour ca que je les ai regroupé par date dans mon code sql mais pour l'instant je suis obligé de faire une requête pour chaque mois et de les regrouper après...
Hadrien
moderno31
Messages postés
870
Date d'inscription
mardi 23 juin 2009
Statut
Membre
Dernière intervention
8 août 2012
92
10 août 2009 à 18:09
10 août 2009 à 18:09
Hadrien ?
Ouaw j'adore la façon dont ton prénom/pseudo s'écrit.. Trop bien lol
Heu donc, tu veux avoir pour chaque mois le total de devis.p1 ?
Tu peux me mettre comme ça
Select month(date-restitution dans le format anglais comme tu as mis) as mois, sum(devis.p1) as total_devis from table...plus reste de que requete. avec clause where = que l'année 2009. Il te le sortira mois par mois et sommé. Oublie pas de faire un groupe by sur la colonne mois.
Ouaw j'adore la façon dont ton prénom/pseudo s'écrit.. Trop bien lol
Heu donc, tu veux avoir pour chaque mois le total de devis.p1 ?
Tu peux me mettre comme ça
Select month(date-restitution dans le format anglais comme tu as mis) as mois, sum(devis.p1) as total_devis from table...plus reste de que requete. avec clause where = que l'année 2009. Il te le sortira mois par mois et sommé. Oublie pas de faire un groupe by sur la colonne mois.
hadrianovich
Messages postés
30
Date d'inscription
vendredi 7 août 2009
Statut
Membre
Dernière intervention
25 septembre 2009
11 août 2009 à 09:33
11 août 2009 à 09:33
Salut!
Merci de ta réponse j'ai tenté :
Select month(date_restitution) AS mois, sum(devis.p1) as total_devis FROM Devis INNER JOIN Projet ON Devis.Num_devis=Projet.Num_Projet group by month
Mais il me demande une date et je ne sais pas pourquoi...
Merci!
Merci de ta réponse j'ai tenté :
Select month(date_restitution) AS mois, sum(devis.p1) as total_devis FROM Devis INNER JOIN Projet ON Devis.Num_devis=Projet.Num_Projet group by month
Mais il me demande une date et je ne sais pas pourquoi...
Merci!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
moderno31
Messages postés
870
Date d'inscription
mardi 23 juin 2009
Statut
Membre
Dernière intervention
8 août 2012
92
11 août 2009 à 14:52
11 août 2009 à 14:52
Re,
il n'y a plus de clause WHERE.
Aussi astu vérifié le format de ton champ date ?
Month ne fonctionne qu'avec des date du format orignal DATETIME anglais.
Quand je teste access 2003 version Fr ne sait pas afficher de date dans ce format.
Par contre que je fait month(date_ta_date au format date/heure) il me revoie bien le mois.
il n'y a plus de clause WHERE.
Aussi astu vérifié le format de ton champ date ?
Month ne fonctionne qu'avec des date du format orignal DATETIME anglais.
Quand je teste access 2003 version Fr ne sait pas afficher de date dans ce format.
Par contre que je fait month(date_ta_date au format date/heure) il me revoie bien le mois.
hadrianovich
Messages postés
30
Date d'inscription
vendredi 7 août 2009
Statut
Membre
Dernière intervention
25 septembre 2009
12 août 2009 à 09:39
12 août 2009 à 09:39
Bonjour,
Merci de ta réponse je regarde pour le format de la date.
Je n'ai pas besoin de clause where si il me trie déjà les montants par mois et qu'il me les regroupe en faisant le total.
Hadrien
Merci de ta réponse je regarde pour le format de la date.
Je n'ai pas besoin de clause where si il me trie déjà les montants par mois et qu'il me les regroupe en faisant le total.
Hadrien
moderno31
Messages postés
870
Date d'inscription
mardi 23 juin 2009
Statut
Membre
Dernière intervention
8 août 2012
92
12 août 2009 à 09:43
12 août 2009 à 09:43
ok,
j'ai poussé un peu et en version Fr de Access pas de date format datetime anglais.
month, day, year renvoient bien les éléments attendus de DATE_JJMMAAAA
j'ai poussé un peu et en version Fr de Access pas de date format datetime anglais.
month, day, year renvoient bien les éléments attendus de DATE_JJMMAAAA
hadrianovich
Messages postés
30
Date d'inscription
vendredi 7 août 2009
Statut
Membre
Dernière intervention
25 septembre 2009
12 août 2009 à 10:09
12 août 2009 à 10:09
Rebonjour,
Voilà j'ai une autre question , est t'il possible de faire quelquechose du type:
Select month(date_restitution) AS mois, sum(devis.p1) as total_devis , YEAR(date_restitution) as année
FROMDevis INNER JOIN Projet ON Devis.Num_devis=Projet.Num_Projet group by mois
avec un group by year quelquepart pour qu'en plus il me rajoute les années à côté du mois?
Merci
Voilà j'ai une autre question , est t'il possible de faire quelquechose du type:
Select month(date_restitution) AS mois, sum(devis.p1) as total_devis , YEAR(date_restitution) as année
FROMDevis INNER JOIN Projet ON Devis.Num_devis=Projet.Num_Projet group by mois
avec un group by year quelquepart pour qu'en plus il me rajoute les années à côté du mois?
Merci
hadrianovich
Messages postés
30
Date d'inscription
vendredi 7 août 2009
Statut
Membre
Dernière intervention
25 septembre 2009
12 août 2009 à 10:28
12 août 2009 à 10:28
Voilà le problème...
"Vous avez essayé d'exécuter une requête ne comprenant pas l'expression spécifiée "month(Devis.[date de restitution])" comme une partie de la fonction d'agrégat."
Pour :Select month(date_restitution) AS mois, sum(devis.p1) as total_devis FROM Devis INNER JOIN Projet ON Devis.Num_devis=Projet.Num_Projet group by mois
"Vous avez essayé d'exécuter une requête ne comprenant pas l'expression spécifiée "month(Devis.[date de restitution])" comme une partie de la fonction d'agrégat."
Pour :Select month(date_restitution) AS mois, sum(devis.p1) as total_devis FROM Devis INNER JOIN Projet ON Devis.Num_devis=Projet.Num_Projet group by mois
moderno31
Messages postés
870
Date d'inscription
mardi 23 juin 2009
Statut
Membre
Dernière intervention
8 août 2012
92
12 août 2009 à 16:22
12 août 2009 à 16:22
Oula j'ai pas suivi, tu as fait ta req et access ta renvoyé une erreur c'est ça ?
Ma correction
J'ai pris l'habitude de faire mes group by sur l'intitulé original des champs. Pas sur leur alias.
Sous SQL server ça ne passe pas de group by sur alias.
De même que j'ai pris l'habitude de ne faire que des LEFT JOIN, comme ça je suis au courant lorqu'une jointure n'a pu etre faite (NULL). Le INNER va te renvoyer que les jointures possibles.
Dit moi si tu as des soucis avec le month(date...) sous access. Et si oui fait moi voir ce que tu lui écrit. J'ai testé ça marche...
Ma correction
SELECT MONTH(date_restitution) AS mois ,SUM(devis.p1) AS total_devis ,YEAR(date_restitution) as année FROM Devis INNER JOIN Projet ON Devis.Num_devis=Projet.Num_Projet GROUP BY MONTH(date_restitution), YEAR(date_restitution)
J'ai pris l'habitude de faire mes group by sur l'intitulé original des champs. Pas sur leur alias.
Sous SQL server ça ne passe pas de group by sur alias.
De même que j'ai pris l'habitude de ne faire que des LEFT JOIN, comme ça je suis au courant lorqu'une jointure n'a pu etre faite (NULL). Le INNER va te renvoyer que les jointures possibles.
Dit moi si tu as des soucis avec le month(date...) sous access. Et si oui fait moi voir ce que tu lui écrit. J'ai testé ça marche...
hadrianovich
Messages postés
30
Date d'inscription
vendredi 7 août 2009
Statut
Membre
Dernière intervention
25 septembre 2009
12 août 2009 à 16:27
12 août 2009 à 16:27
bonjour à tous !
Voilà j'ai essayé avec UNION quelque chose du type
SELECT COUNT(Devis.P1) AS JANVIER
FROM Devis INNER JOIN Projet ON Devis.Num_devis=Projet.Num_Projet
WHERE (((Projet.Niv)="0") AND ((Devis.[Date de restitution])>#12/31/2008# And (Devis.[Date de restitution])<#2/1/2009#))
UNION
SELECT COUNT(Devis.P1) AS FEVRIER
FROM Devis INNER JOIN Projet ON Devis.Num_devis=Projet.Num_Projet
WHERE (((Projet.Niv)="0") And ((Devis.[Date de restitution])>#1/31/2009# And (Devis.[Date de restitution])<#3/1/2009#))
UNION
SELECT COUNT(Devis.P1) AS MARS
FROM Devis INNER JOIN Projet ON Devis.Num_devis=Projet.Num_Projet
WHERE (((Projet.Niv)="0") And ((Devis.[Date de restitution])>#2/28/2009# And (Devis.[Date de restitution])<#4/1/2009#))
UNION
SELECT COUNT(Devis.P1) AS AVRIL
FROM Devis INNER JOIN Projet ON Devis.Num_devis=Projet.Num_Projet
WHERE (((Projet.Niv)="0") And ((Devis.[Date de restitution])>#3/31/2009# And (Devis.[Date de restitution])<#5/1/2009#))
UNION
SELECT COUNT(Devis.P1) AS MAI
FROM Devis INNER JOIN Projet ON Devis.Num_devis=Projet.Num_Projet
WHERE (((Projet.Niv)="0") And ((Devis.[Date de restitution])>#4/30/2009# And (Devis.[Date de restitution])<#6/1/2009#))
UNION
SELECT COUNT(Devis.P1) AS JUIN
FROM Devis INNER JOIN Projet ON Devis.Num_devis=Projet.Num_Projet
WHERE (((Projet.Niv)="0") And ((Devis.[Date de restitution])>#5/31/2009# And (Devis.[Date de restitution])<#7/1/2009#))
UNION
SELECT COUNT(Devis.P1) AS JUILLET
FROM Devis INNER JOIN Projet ON Devis.Num_devis=Projet.Num_Projet
WHERE (((Projet.Niv)="0") And ((Devis.[Date de restitution])>#6/30/2009# And (Devis.[Date de restitution])<#8/1/2009#))
UNION
SELECT COUNT(Devis.P1) AS AOUT
FROM Devis INNER JOIN Projet ON Devis.Num_devis=Projet.Num_Projet
WHERE (((Projet.Niv)="0") And ((Devis.[Date de restitution])>#7/31/2009# And (Devis.[Date de restitution])<#9/1/2009#))
UNION
SELECT COUNT(Devis.P1) AS SEPTEMBRE
FROM Devis INNER JOIN Projet ON Devis.Num_devis=Projet.Num_Projet
WHERE (((Projet.Niv)="0") And ((Devis.[Date de restitution])>#8/31/2009# And (Devis.[Date de restitution])<#10/1/2009#))
UNION
SELECT COUNT(Devis.P1) AS OCTOBRE
FROM Devis INNER JOIN Projet ON Devis.Num_devis=Projet.Num_Projet
WHERE (((Projet.Niv)="0") And ((Devis.[Date de restitution])>#9/30/2009# And (Devis.[Date de restitution])<#11/1/2009#))
UNION
SELECT COUNT(Devis.P1) AS NOVEMBRE
FROM Devis INNER JOIN Projet ON Devis.Num_devis=Projet.Num_Projet
WHERE (((Projet.Niv)="0") AND ((Devis.[Date de restitution])>#10/31/2009# And (Devis.[Date de restitution])<#12/1/2009#))
UNION SELECT COUNT(Devis.P1) AS DECEMBRE
FROM Devis INNER JOIN Projet ON Devis.Num_devis=Projet.Num_Projet
WHERE (((Projet.Niv)="0") And ((Devis.[Date de restitution])>#11/30/2009# And (Devis.[Date de restitution])<#1/1/2010#));
Il m'affiche bien les données que je veut sauf qu'elles sont positionnées très bizarrement à savoir qu'en fait avec cette formule j'obtiens tout dans la même colonne(ici janvier)
L'autre problème est qu'il ne m'affiche rien quand le resultat est égal à zéro!
Voilà j'espère que vous allez pouvoir m'aider
Hadrien
Voilà j'ai essayé avec UNION quelque chose du type
SELECT COUNT(Devis.P1) AS JANVIER
FROM Devis INNER JOIN Projet ON Devis.Num_devis=Projet.Num_Projet
WHERE (((Projet.Niv)="0") AND ((Devis.[Date de restitution])>#12/31/2008# And (Devis.[Date de restitution])<#2/1/2009#))
UNION
SELECT COUNT(Devis.P1) AS FEVRIER
FROM Devis INNER JOIN Projet ON Devis.Num_devis=Projet.Num_Projet
WHERE (((Projet.Niv)="0") And ((Devis.[Date de restitution])>#1/31/2009# And (Devis.[Date de restitution])<#3/1/2009#))
UNION
SELECT COUNT(Devis.P1) AS MARS
FROM Devis INNER JOIN Projet ON Devis.Num_devis=Projet.Num_Projet
WHERE (((Projet.Niv)="0") And ((Devis.[Date de restitution])>#2/28/2009# And (Devis.[Date de restitution])<#4/1/2009#))
UNION
SELECT COUNT(Devis.P1) AS AVRIL
FROM Devis INNER JOIN Projet ON Devis.Num_devis=Projet.Num_Projet
WHERE (((Projet.Niv)="0") And ((Devis.[Date de restitution])>#3/31/2009# And (Devis.[Date de restitution])<#5/1/2009#))
UNION
SELECT COUNT(Devis.P1) AS MAI
FROM Devis INNER JOIN Projet ON Devis.Num_devis=Projet.Num_Projet
WHERE (((Projet.Niv)="0") And ((Devis.[Date de restitution])>#4/30/2009# And (Devis.[Date de restitution])<#6/1/2009#))
UNION
SELECT COUNT(Devis.P1) AS JUIN
FROM Devis INNER JOIN Projet ON Devis.Num_devis=Projet.Num_Projet
WHERE (((Projet.Niv)="0") And ((Devis.[Date de restitution])>#5/31/2009# And (Devis.[Date de restitution])<#7/1/2009#))
UNION
SELECT COUNT(Devis.P1) AS JUILLET
FROM Devis INNER JOIN Projet ON Devis.Num_devis=Projet.Num_Projet
WHERE (((Projet.Niv)="0") And ((Devis.[Date de restitution])>#6/30/2009# And (Devis.[Date de restitution])<#8/1/2009#))
UNION
SELECT COUNT(Devis.P1) AS AOUT
FROM Devis INNER JOIN Projet ON Devis.Num_devis=Projet.Num_Projet
WHERE (((Projet.Niv)="0") And ((Devis.[Date de restitution])>#7/31/2009# And (Devis.[Date de restitution])<#9/1/2009#))
UNION
SELECT COUNT(Devis.P1) AS SEPTEMBRE
FROM Devis INNER JOIN Projet ON Devis.Num_devis=Projet.Num_Projet
WHERE (((Projet.Niv)="0") And ((Devis.[Date de restitution])>#8/31/2009# And (Devis.[Date de restitution])<#10/1/2009#))
UNION
SELECT COUNT(Devis.P1) AS OCTOBRE
FROM Devis INNER JOIN Projet ON Devis.Num_devis=Projet.Num_Projet
WHERE (((Projet.Niv)="0") And ((Devis.[Date de restitution])>#9/30/2009# And (Devis.[Date de restitution])<#11/1/2009#))
UNION
SELECT COUNT(Devis.P1) AS NOVEMBRE
FROM Devis INNER JOIN Projet ON Devis.Num_devis=Projet.Num_Projet
WHERE (((Projet.Niv)="0") AND ((Devis.[Date de restitution])>#10/31/2009# And (Devis.[Date de restitution])<#12/1/2009#))
UNION SELECT COUNT(Devis.P1) AS DECEMBRE
FROM Devis INNER JOIN Projet ON Devis.Num_devis=Projet.Num_Projet
WHERE (((Projet.Niv)="0") And ((Devis.[Date de restitution])>#11/30/2009# And (Devis.[Date de restitution])<#1/1/2010#));
Il m'affiche bien les données que je veut sauf qu'elles sont positionnées très bizarrement à savoir qu'en fait avec cette formule j'obtiens tout dans la même colonne(ici janvier)
L'autre problème est qu'il ne m'affiche rien quand le resultat est égal à zéro!
Voilà j'espère que vous allez pouvoir m'aider
Hadrien
moderno31
Messages postés
870
Date d'inscription
mardi 23 juin 2009
Statut
Membre
Dernière intervention
8 août 2012
92
12 août 2009 à 16:35
12 août 2009 à 16:35
Perso j'ai pas le truc sous les yeux donc ça devient complicated.
Je ne connais pas la structure de tes données donc j'ai un peu de mal à te conseiller. Si tu étais mon voisin ça serait simple :MDR
Par contre pourquoi tu nes fais pas une requetes pour l'année, avec un champ "mois" dans ton select, puis un group by à la fin à cause de ton SUM.
Je ne connais pas la structure de tes données donc j'ai un peu de mal à te conseiller. Si tu étais mon voisin ça serait simple :MDR
Par contre pourquoi tu nes fais pas une requetes pour l'année, avec un champ "mois" dans ton select, puis un group by à la fin à cause de ton SUM.
hadrianovich
Messages postés
30
Date d'inscription
vendredi 7 août 2009
Statut
Membre
Dernière intervention
25 septembre 2009
12 août 2009 à 16:43
12 août 2009 à 16:43
C'est bon a partir de ce que tu viens de me donner je vais pouvoir tout faire!!
Merci beaucoup et bonne continuation a toi :)
hadrien
Merci beaucoup et bonne continuation a toi :)
hadrien
moderno31
Messages postés
870
Date d'inscription
mardi 23 juin 2009
Statut
Membre
Dernière intervention
8 août 2012
92
12 août 2009 à 16:48
12 août 2009 à 16:48
cool, parfait.
a la prochaine
a la prochaine