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 06/01/2012, 11h04   #1
Invité de passage
 
Inscription : octobre 2011
Messages : 17
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 17
Points : 3
Points : 3
Par défaut contourner la limite de colonnes d'une analyse croisée

Bonjour à vous,

J'aimerais faire une requête d'analyse croisée qui contient plus de 255 colonnes. Je voudrais donc ne prendre en compte que les 255 premiers résultats du pivot, pour cela je voudrais faire une requête du style :

...
PIVOT TOP 255 NomChamp;

Malheureusement, cette synthaxe ne fonctionne pas.

Quelqu'un aurait une idée pour contourner le problème?

Merci d'avance!
orfeu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2012, 12h05   #2
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 206
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 206
Points : 5 256
Points : 5 256
Salut,

Le [NomChamp] contient quoi comme valeurs ?
Est-ce que ces valeurs changent ?
Peux-tu donner des exemples de données ?

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 06/01/2012, 12h27   #3
Invité de passage
 
Inscription : octobre 2011
Messages : 17
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 17
Points : 3
Points : 3
Citation:
Envoyé par User Voir le message
Salut,

Le [NomChamp] contient quoi comme valeurs ?
Est-ce que ces valeurs changent ?
Peux-tu donner des exemples de données ?

A+
Merci de ta réponse!
[NomChamp] contiens des noms de paramètres de test, ils diffèrent suivant le test que l'on réalise.

En simplifiant, je cross 3 tables:
[PART]
IDPart
identification

[PARAMETER]
IDParameter
label

[TEST]
IDPart, IDParameter
result

Et ce que je recherche:

Identification | Param1 | Param2 | ...
Part1 | val(1,1) | val(1,2) | ...
Part2 | val(2,1) | val(2,2) | ...
...

Mais biensur, le nombre de paramètres est trop grand pour le moteur de bases de données. J'avais pensé de rajouter un attribut number à PARAMETER pour ajouter un petit PARAMETER.number < 255, mais c'est un peu trop du bricolage à mon goût.

D'un autre côté, je ne suis pas obligé de faire un pivot, mais cela me parait plus élégant.
orfeu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2012, 12h45   #4
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 206
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 206
Points : 5 256
Points : 5 256
Re,

Tu peux faire une sous-requête avec

Code :
1
2
select top 255 [IdParameter], [Label]
From Parameters...
Puis tu crées ta RAC sur cette requête et les 2 autres tables...

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 06/01/2012, 13h44   #5
Invité de passage
 
Inscription : octobre 2011
Messages : 17
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 17
Points : 3
Points : 3
J'avoue ne pas trop comprendre ta solution... Tu peux t'expliquer un peu plus clairement?

Merci d'avance
orfeu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2012, 17h16   #6
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 206
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 206
Points : 5 256
Points : 5 256
En fait,

Il faut que tu créer une requête sélection à partir de tes 3 tables, du style:

Code sql :
1
2
3
SELECT Test.IdPart, Part.Identification, Test.IdParameter, Parameter.Label, Test.Result
FROM (Test INNER JOIN Part ON Test.IdPart = Part.IdPart) INNER JOIN Parameter ON Test.IdParameter = Parameter.IdParameter
WHERE (((DCount("IdParameter","Test","IdPart=" & [Test].[IdPart] & " and IdParameter<=" & [Test].[IdParameter]))<=255));

Et tu base ta requête croisée sur cette requête sélection.

Ici je suppose que tes champs IdParameter et IdPart sont du type numérique.

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 16/01/2012, 10h38   #7
Invité de passage
 
Inscription : octobre 2011
Messages : 17
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 17
Points : 3
Points : 3
Ta solution est pas mal sachant que les Parameter.Number sont croissants. Mais maintenant c'est un problème de performances qui se pose. Je crois que je vais rester sur l'idée d'ajouter un attribut qui stocke le numéro incrémenté histoire de ne faire qu'un test d'inégalité dans la clause where plutot qu'un DCount gourmant en ressources...

Pas d'autres idées?
orfeu est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h23.


 
 
 
 
Partenaires

Hébergement Web