Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/03/2011, 20h41   #1
Nouveau Membre du Club
 
Inscription : août 2003
Messages : 163
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 163
Points : 31
Points : 31
Par défaut Requete croise simple

bonjour

Je n'arrive pas faire une requête croise. Voici ma table :

Catégorie , débit, crédit , date,

alimentation , 0€ , 60€ , 01/01/2010
Gaz............, 0€ , 60 € , 02/01/2010
alimentation , 20 , 0€ , 03/01/2010
alimentation , 10€ , 0€ , 01/02/2010
Gaz........... , 10€ , 0 € , 02/02/2010
alimentation , 0 , 100€ , 04/02/2010

Voici ce que je voudrais avoir comme résultat :

..................Janvier, février , mars, avril, ect...
alimentation.. 40€,.. 130€
Gaz ............ 60€,.. 30€


Pouvez-vous m'aider??

Merci.

Eric
__________________
Commandeur
Commandeur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2011, 22h27   #2
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 205
Détails du profil
Informations personnelles :
Nom : Homme Denis
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 3 205
Points : 5 258
Points : 5 258
Bonsoir,

Utilises l'assistant requête croisée:
1- tu choisis le champ pour les en-têtes de lignes (catégorie)
2- le champ pour les en-têtes de colonnes (le champ Date avec regroupement par mois)
3- et comme valeur à l'intersection des lignes et colonnes, tu choisis somme(crédit) par exemple, ensuite il te faudra retoucher le champ valeur en mode création pour y mettre somme(crédit-débit)

A+
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp.

Bon développement !


Mes tutoriels et contributions sur ma page perso:
Ma page personnelle
User est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/03/2011, 09h27   #3
Nouveau Membre du Club
 
Inscription : août 2003
Messages : 163
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 163
Points : 31
Points : 31
bonjour,

J'ai déjà essaye, les donnée s'affiche pas?
Voici ma requête :

Code :
1
2
3
4
5
6
 
TRANSFORM Sum(([credit]-[debit])) AS exp
SELECT Table1.[Categorie], Sum(([credit]-[debit])) AS [Total de debit]
FROM Table1
GROUP BY Table1.[Categorie]
PIVOT Format([Date1],"mmm") In ("janv","févr","mars","avr","mai","juin","juil","août","sept","oct","nov","déc");
Quel est mon erreur? Et aussi j'ai plusieurs année comment affiche l'année?

Merci de ton aide.
__________________
Commandeur
Commandeur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2011, 13h38   #4
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 205
Détails du profil
Informations personnelles :
Nom : Homme Denis
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 3 205
Points : 5 258
Points : 5 258
Salut,

et 1 paramètre année sur la requête croisée ca t'irait ?

Avec après avoir choisi l'année affichage des 12 mois de l'année
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp.

Bon développement !


Mes tutoriels et contributions sur ma page perso:
Ma page personnelle
User est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2011, 15h06   #5
Nouveau Membre du Club
 
Inscription : août 2003
Messages : 163
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 163
Points : 31
Points : 31
re

Oui surement, mais pour l'instant je recherche d'abord a afficher mes données correctement. Car mes données sont incorrect est je comprend pas.

J'essayer ceci pour les années mois
Code :
 Format([Date1];'mmmm aaaa')
sa marche pas, pourquoi que sur 12 mois?
__________________
Commandeur
Commandeur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2011, 15h24   #6
Nouveau Membre du Club
 
Inscription : août 2003
Messages : 163
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 163
Points : 31
Points : 31
J'ai compris mon erreur, c'est simple si il y a pas de valeur numérique dans le champ de la table il me fait pas le calcule.


Mais je trouve toujours pas comment faire pour qu'il me calcule avec le mois précédant.

Example :
.........Alimentation , gaze
janvier10...30€........-10€
Fervier10...130€...... 50€

Et ma requete elle affiche ceci:

.........Alimentation , gaze
janvier10...30€........-10€
Fervier10...100€...... 60€


Comment faire?

Code :
1
2
3
4
5
6
 
TRANSFORM Sum([credit]-[debit]) AS Expr1
SELECT Format([Date1],"mmm yyyy") AS [Date]
FROM Table1
GROUP BY Format([Date1],"mmm yyyy")
PIVOT Table1.Categorie;
__________________
Commandeur
Commandeur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2011, 17h40   #7
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 205
Détails du profil
Informations personnelles :
Nom : Homme Denis
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 3 205
Points : 5 258
Points : 5 258
ok,

C'est un cumul, mais il y avait une erreur dans ton tableau de départ:

Il faut te baser sur cette requête :

Code sql :
1
2
3
SELECT DISTINCT Table1.Categorie, Format([Table1].[Date1]," yyyy/mm") AS Mois, (SELECT Sum([Credit]-[Debit]) AS s FROM Table1 AS T1 WHERE Format(T1.[Date1],"yyyy/mm")<=Format([Table1].[Date1],"yyyy/mm") AND (T1.Categorie=Table1.Categorie) ) AS valeur
FROM Table1
ORDER BY Table1.Categorie, Format([Table1].[Date1]," yyyy/mm");

Pour faire les cumuls, tu l'enregistres sous "Requete1" par exemple et après tu fais ta requête croisée sur cette requête

A+
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp.

Bon développement !


Mes tutoriels et contributions sur ma page perso:
Ma page personnelle
User est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2011, 18h27   #8
Nouveau Membre du Club
 
Inscription : août 2003
Messages : 163
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 163
Points : 31
Points : 31
J'ai fait ta requête qui marche super bien.

Mais quand je l'utilise pour faire une requête croise , j'ai un message d'erreur
je ne comprend pas.


Message :

Le moteur de la base de données microsoft access ne reconnait pas "[table 1].[date1]" en tant que nom de champ ou expression correcte.

Pourquoi a ton avis?
__________________
Commandeur
Commandeur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2011, 18h51   #9
Nouveau Membre du Club
 
Inscription : août 2003
Messages : 163
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 163
Points : 31
Points : 31
re

je suis obliger de prendre ta requête est de stocker les données dans une table est de lancer ma requête croisse sur cette table.

Pourquoi je ne peux pas lancé une requête croise directement sur ta requête?
__________________
Commandeur
Commandeur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2011, 19h12   #10
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 205
Détails du profil
Informations personnelles :
Nom : Homme Denis
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 3 205
Points : 5 258
Points : 5 258
Citation:
Message :

Le moteur de la base de données microsoft access ne reconnait pas "[table 1].[date1]" en tant que nom de champ ou expression correcte.

Pourquoi a ton avis?
"[table1].[date1]"

Citation:
re

je suis obliger de prendre ta requête est de stocker les données dans une table est de lancer ma requête croisse sur cette table.

Pourquoi je ne peux pas lancé une requête croise directement sur ta requête?
Tu ouvres une nouvelle requête en mode création, puis tu fais affichage-> Mode SQL...

tu copie le sql de ma requête dans l'éditeur et tu enregistres sous "Requete1".

Et tu te base sur "Requete1" pour construire ta requête croisée avec l'assistant

A+
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp.

Bon développement !


Mes tutoriels et contributions sur ma page perso:
Ma page personnelle
User est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2011, 23h50   #11
Nouveau Membre du Club
 
Inscription : août 2003
Messages : 163
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 163
Points : 31
Points : 31
re,

c'est ce que j'ai fait depuis le début. En mode sql.

Je comprend pas ce message d'erreur. car quand je la lance elle fonctionne bien. Mais quant je fait l'assistant pour une requête croise, j'ai le message d'erreur lors de son exécution de la requête croise.

C'est bizarre, peux tu essayer de ton côte svp?

Merci de ton coup de main.
__________________
Commandeur
Commandeur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2011, 10h36   #12
Nouveau Membre du Club
 
Inscription : août 2003
Messages : 163
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 163
Points : 31
Points : 31
Bonjour,

Bon j'ai fait de la requête une création de table est je me sert de la table pour faire une requête croise.

Juste un dernier soucis, lors que j'ai un mois qui n'a pas de donnée la case est vide.
je souhaiterais qui me reprenne la valeur du mois précédant.

exemple (pour une catégorie) :

Mois janvier 200€
Mois février 20€
Mois avril 10€

La requête croise m'affiche:

Mois janvier 200€
Mois février 220€
Mois mars 0€
Mois avril 230€

Je souhaite :

Mois janvier 200€
Mois février 220€
Mois mars 220€
Mois avril 230€

Pour conclure, je souhaiterai la valeur de chaque catégorie par mois
__________________
Commandeur
Commandeur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 17h59   #13
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 205
Détails du profil
Informations personnelles :
Nom : Homme Denis
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 3 205
Points : 5 258
Points : 5 258
Re,

Pas évident ta demande

Regarde voir ce fichier:
db1.zip

A+
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp.

Bon développement !


Mes tutoriels et contributions sur ma page perso:
Ma page personnelle
User est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/03/2011, 18h19   #14
Nouveau Membre du Club
 
Inscription : août 2003
Messages : 163
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 163
Points : 31
Points : 31
bonjour,

Merci de ton aide, sa va me permettre de bien d'avance.

Juste une question pour les tables (t_année et t_mois) sont obligatoire?

J'ai une date dans la table initiale, donc pourquoi j'ai besoin de ces tables?
C'est juste pour comprendre.

Merci de ton aide.
__________________
Commandeur
Commandeur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 18h34   #15
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 205
Détails du profil
Informations personnelles :
Nom : Homme Denis
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 3 205
Points : 5 258
Points : 5 258
Salut,

Citation:
juste une question pour les tables (t_année et t_mois) sont obligatoire?
Oui ca permet de combler les trous:

par exemple tu as:

Mois février 220€
Mois avril 230€

ca te permet de faire apparaître le mois de mars:

Mois février 220€
Mois mars 220€
Mois avril 230€

Bonne continuation
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp.

Bon développement !


Mes tutoriels et contributions sur ma page perso:
Ma page personnelle
User est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/03/2011, 18h43   #16
Nouveau Membre du Club
 
Inscription : août 2003
Messages : 163
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 163
Points : 31
Points : 31
Merci pour ton aide.
__________________
Commandeur
Commandeur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2011, 19h52   #17
Nouveau Membre du Club
 
Inscription : août 2003
Messages : 163
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 163
Points : 31
Points : 31
Bonjour,

Dit moi pour la requête croise, peut-on changer les nom des colonnes?

au lieux de mettre 2011/04 , 2011/03 ect....
mettre 1 , 2 , 3 , 4
1 étant le plus récente.


Merci de ta reponse
__________________
Commandeur
Commandeur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2011, 21h23   #18
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 205
Détails du profil
Informations personnelles :
Nom : Homme Denis
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 3 205
Points : 5 258
Points : 5 258
Oui,

Mais dans ce cas il te faut un paramètre pour l'année pour limiter les colonnes aux 12 mois de l'année classés par ordre croissants.

Si je me base sur la requête 1 de la base "db1.mdb", tu obtiendrais quelque chose comme cela :

Code :
1
2
3
4
5
6
7
PARAMETERS Annee Value;
TRANSFORM Sum(Requete1.Cumul) AS SommeDevaleur
SELECT Requete1.Categorie
FROM Requete1
WHERE Year([Mo])=[Annee]
GROUP BY Requete1.Categorie
PIVOT Month([Mo]) In (1,2,3,4,5,6,7,8,9,10,11,12);
A+
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp.

Bon développement !


Mes tutoriels et contributions sur ma page perso:
Ma page personnelle
User est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2011, 22h47   #19
Nouveau Membre du Club
 
Inscription : août 2003
Messages : 163
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 163
Points : 31
Points : 31
Merci,

Juste, c'est possible d'enlever la demande de l'année?
se base sur l'année en cours
sinon c'est nikel
Merci
__________________
Commandeur
Commandeur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2011, 22h58   #20
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 205
Détails du profil
Informations personnelles :
Nom : Homme Denis
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 3 205
Points : 5 258
Points : 5 258
Oui,

Si tu n'as qu'une seule année à prendre en compte, tu peux enlever le where, sinon si tu as plusieurs années tu ne pourras distinguer les mois sur 2 années par exemple

A+
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp.

Bon développement !


Mes tutoriels et contributions sur ma page perso:
Ma page personnelle
User est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h39.


 
 
 
 
Partenaires

Hébergement Web