Pb syntaxe création requête

Résolu/Fermé
Kayna.86 Messages postés 42 Date d'inscription mercredi 31 octobre 2012 Statut Membre Dernière intervention 17 avril 2013 - 27 mars 2013 à 05:10
Kayna.86 Messages postés 42 Date d'inscription mercredi 31 octobre 2012 Statut Membre Dernière intervention 17 avril 2013 - 29 mars 2013 à 16:36
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


A voir également:

2 réponses

blux Messages postés 26000 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 24 avril 2024 3 289
27 mars 2013 à 09:03
Salut,

j'ai rien compris du tout...

Que veux-tu faire ? Comment t'y prends-tu ? Qu'est-ce qui coince ?
0
Kayna.86 Messages postés 42 Date d'inscription mercredi 31 octobre 2012 Statut Membre Dernière intervention 17 avril 2013 5
27 mars 2013 à 10:40
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...
0
blux Messages postés 26000 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 24 avril 2024 3 289
27 mars 2013 à 10:46
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 :
SELECT * FROM Req2000 UNION SELECT * FROM Req2001 UNION SELECT * FROM Req2002...
0
Kayna.86 Messages postés 42 Date d'inscription mercredi 31 octobre 2012 Statut Membre Dernière intervention 17 avril 2013 5
28 mars 2013 à 14:43
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.
0
blux Messages postés 26000 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 24 avril 2024 3 289
28 mars 2013 à 21:22
Peu de SQL offrent cette possibilité...
A moins peut-être de regarder du côté des requêtes 'analyse croisée'.
0
Kayna.86 Messages postés 42 Date d'inscription mercredi 31 octobre 2012 Statut Membre Dernière intervention 17 avril 2013 5
29 mars 2013 à 16:36
Merci pour cette info,

du coup j'ai opté plutôt pour la table conso qui reprend les données de chaque requête.
0