Pb syntaxe création requête
Résolu
Kayna.86
Messages postés
42
Date d'inscription
Statut
Membre
Dernière intervention
-
Kayna.86 Messages postés 42 Date d'inscription Statut Membre Dernière intervention -
Kayna.86 Messages postés 42 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
je débute sur access et je bloque sur un problème assez simple dont je ne trouve pas la solution:
Surface en 2000 (=> Sum(SURFACE.Surface) as [Surface en 2000] where BATIMENTS.annee<=2000)
Surface en 2001 (=> Sum(SURFACE.Surface) as [Surface en 2000] where BATIMENTS.annee<=2001)
...
Surface en 2010 (=> Sum(SURFACE.Surface) as [Surface en 2000] where BATIMENTS.annee<=2010)
Le tout en colonne, et sur une même feuille (donc une seule requête).
Mon problème étant que je ne sais pas comment appliquer la bonne clause WHERE à la bonne colonne.
Il n'y a que la première clause qui est prise en compte et appliqué à toutes les colonnes.
Quelqu'un peut-il m'aider s'il vous plait???
Merci d'avance,
Kayna
je débute sur access et je bloque sur un problème assez simple dont je ne trouve pas la solution:
Surface en 2000 (=> Sum(SURFACE.Surface) as [Surface en 2000] where BATIMENTS.annee<=2000)
Surface en 2001 (=> Sum(SURFACE.Surface) as [Surface en 2000] where BATIMENTS.annee<=2001)
...
Surface en 2010 (=> Sum(SURFACE.Surface) as [Surface en 2000] where BATIMENTS.annee<=2010)
Le tout en colonne, et sur une même feuille (donc une seule requête).
Mon problème étant que je ne sais pas comment appliquer la bonne clause WHERE à la bonne colonne.
Il n'y a que la première clause qui est prise en compte et appliqué à toutes les colonnes.
Quelqu'un peut-il m'aider s'il vous plait???
Merci d'avance,
Kayna
A voir également:
- Pb syntaxe création requête
- Creation compte gmail - Guide
- Création site web - Guide
- Media creation tool - Télécharger - Systèmes d'exploitation
- Création compte google - Guide
- Creation compte vinted - Guide
2 réponses
Salut,
j'ai rien compris du tout...
Que veux-tu faire ? Comment t'y prends-tu ? Qu'est-ce qui coince ?
j'ai rien compris du tout...
Que veux-tu faire ? Comment t'y prends-tu ? Qu'est-ce qui coince ?
Bonjour Blux,
Désolée si je n'ai pas été assez claire.
En fait, J'ai 2 tables: l'une qui contient des infos sur nos bâtiments (date de construction, etc.) et l'autre qui contient les surfaces rattachées à ces bâtiments.
Je voudrais faire une étude sur l'évolution de nos surfaces totales sur une période donnée.
En gros je voudrais une requête qui m'indique par année la surface totale de tous nos bâtiments construits avant ou pendant l'année:
Ca donnerait:
Col1 : Surface des bâtiments dont année de construction <=2000
Col2:Surface des bâtiments dont année de construction <=2001
...
Col10:Surface des bâtiments dont année de construction <=2010
Je crée ma requête en mode"Creation " (je ne maitrise pas la création en mode SQL).
Si je fais l'étude sur 2 années uniquement:
Je crée 2 colonnes "SURFACE 2000" et "SURFACE 2001" avec:
-champs = Surface
-Table = SURFACE
-tri = Somme
- Critère = table(Batiments).champs(année)<=2000 Ne fonctionne pas (j'imagine que la condition ne peut porter que sur le champs "surface" uniquement)
j'ai donc rajouté 2 colonnes "Année 2000" et "Année 2001" (que j'ai décochées) à la suite des colonnes Surface correspondantes, avec :.
-champs = Annee
-Table = BATIMENT
-Where
-Critere= table(Batiments).champs(année)<=2000
mais j'obtiens:
SELECT SURFACE.surface AS [M² en 2000], SURFACE.surface AS [M² en 2001], FROM BATIMENTS INNER JOIN SURFACE ON BATIMENTS.BdID = SURFACE.BdID
WHERE (((BATIMENTS.annee)<=2000 And (BUILDINGS_ID.EISyear)<=2001))
Qui me donne 2 tableaux calculant la même chose (en combinant les 2 conditions
Or j'aimerais plutôt avoir quelque chose comme:
SELECT SURFACE.surface AS [M² en 2000],
FROM BATIMENTS INNER JOIN SURFACE ON BATIMENTS.BdID = SURFACE.BdID
WHERE (((BATIMENTS.annee)<=2000
SELECT SURFACE.surface AS [M² en 2001],
FROM BATIMENTS INNER JOIN SURFACE ON BATIMENTS.BdID = SURFACE.BdID
WHERE (((BATIMENTS.annee)<=2001
mais ça ne fonctionne pas non plus...
Désolée si je n'ai pas été assez claire.
En fait, J'ai 2 tables: l'une qui contient des infos sur nos bâtiments (date de construction, etc.) et l'autre qui contient les surfaces rattachées à ces bâtiments.
Je voudrais faire une étude sur l'évolution de nos surfaces totales sur une période donnée.
En gros je voudrais une requête qui m'indique par année la surface totale de tous nos bâtiments construits avant ou pendant l'année:
Ca donnerait:
Col1 : Surface des bâtiments dont année de construction <=2000
Col2:Surface des bâtiments dont année de construction <=2001
...
Col10:Surface des bâtiments dont année de construction <=2010
Je crée ma requête en mode"Creation " (je ne maitrise pas la création en mode SQL).
Si je fais l'étude sur 2 années uniquement:
Je crée 2 colonnes "SURFACE 2000" et "SURFACE 2001" avec:
-champs = Surface
-Table = SURFACE
-tri = Somme
- Critère = table(Batiments).champs(année)<=2000 Ne fonctionne pas (j'imagine que la condition ne peut porter que sur le champs "surface" uniquement)
j'ai donc rajouté 2 colonnes "Année 2000" et "Année 2001" (que j'ai décochées) à la suite des colonnes Surface correspondantes, avec :.
-champs = Annee
-Table = BATIMENT
-Where
-Critere= table(Batiments).champs(année)<=2000
mais j'obtiens:
SELECT SURFACE.surface AS [M² en 2000], SURFACE.surface AS [M² en 2001], FROM BATIMENTS INNER JOIN SURFACE ON BATIMENTS.BdID = SURFACE.BdID
WHERE (((BATIMENTS.annee)<=2000 And (BUILDINGS_ID.EISyear)<=2001))
Qui me donne 2 tableaux calculant la même chose (en combinant les 2 conditions
Or j'aimerais plutôt avoir quelque chose comme:
SELECT SURFACE.surface AS [M² en 2000],
FROM BATIMENTS INNER JOIN SURFACE ON BATIMENTS.BdID = SURFACE.BdID
WHERE (((BATIMENTS.annee)<=2000
SELECT SURFACE.surface AS [M² en 2001],
FROM BATIMENTS INNER JOIN SURFACE ON BATIMENTS.BdID = SURFACE.BdID
WHERE (((BATIMENTS.annee)<=2001
mais ça ne fonctionne pas non plus...
Tu peux créer 10 requêtes enregistrées (genre Req2000 à Req20xx) et ensuite tu crées une requête UNION afin de les fusionner et obtenir ce que tu souhaites (l'affichage sera en ligne, mais ça ne devrait pas être rédhibitoire).
Syntaxe de la requête UNION :
Syntaxe de la requête UNION :
SELECT * FROM Req2000 UNION SELECT * FROM Req2001 UNION SELECT * FROM Req2002...
Bonjour Blux,
Ta technique fonctionne parfaitement. En revanche, existe-t-il un moyen d'avoir quand meêm ces données par colonne, car dès que je rajoute d'autres critères à mes requêtes, mes tableaux deviennt difficile à lire:
Est-il possible par exemple de remplir les colonnes d'une requête à partir de données extraites d'autres requêtes?
Dans mon cas de figure, je voudrais créer une requête conso, dont:
col1 = colonne surface de Req2000
col2 = colonne surface de Req2001
etc.
Merci d'avance pour ton aide.
Ta technique fonctionne parfaitement. En revanche, existe-t-il un moyen d'avoir quand meêm ces données par colonne, car dès que je rajoute d'autres critères à mes requêtes, mes tableaux deviennt difficile à lire:
Est-il possible par exemple de remplir les colonnes d'une requête à partir de données extraites d'autres requêtes?
Dans mon cas de figure, je voudrais créer une requête conso, dont:
col1 = colonne surface de Req2000
col2 = colonne surface de Req2001
etc.
Merci d'avance pour ton aide.