Tri partiel dans une table

Le
Francky de Lille
Bonjour,

Je voudrais créer un tri partiel dans une table, je m'explique :

soit la table suivante
Colonne A Colonne B
1 A
2 A
3 A
4 B
5 C
6 D
7 B
8 D
9 C
10 B

Je voudrais avoir cela
Colonne A Colonne B Colonne C
1 A 1
2 A 2
3 A 3
4 B 1
5 C 1
6 D 1
7 B 2
8 D 2
9 C 2
10 B 3

J'ai essayer de faire une requête avec un champs calculé mais j'ai pas
réussi.

Si quelqun à une idée pour m'aider merci d'avance

Franck
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
3stone
Le #19951121
Salut,

Francky de Lille wrote:
Bonjour,

Je voudrais créer un tri partiel dans une table, je m'explique :

soit la table suivante
Colonne A Colonne B
1 A
2 A
3 A
4 B
5 C
6 D
7 B
8 D
9 C
10 B

Je voudrais avoir cela
Colonne A Colonne B Colonne C
1 A 1
2 A 2
3 A 3
4 B 1
5 C 1
6 D 1
7 B 2
8 D 2
9 C 2
10 B 3





Il faut utiliser une sous requête...

Si la table se nomme "LaTable" et les champs A, B et C...
et que l'on utilise deux Alias sur cette table, TA pour la requête
principale et TB pour la sous-requête.

SELECT TA.A, TA.B,
(Select count(B) from LaTable TB
Where (TB.B=TA.B) AND (TB.A <= TA.A)) AS C
FROM LaTable AS TA
ORDER BY TA.A;

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Francky de Lille
Le #19951611
Bonjour

"3stone"
Salut,

Francky de Lille wrote:
Bonjour,

Je voudrais créer un tri partiel dans une table, je m'explique :

soit la table suivante
Colonne A Colonne B
1 A
2 A
3 A
4 B
5 C
6 D
7 B
8 D
9 C
10 B

Je voudrais avoir cela
Colonne A Colonne B Colonne C
1 A 1
2 A 2
3 A 3
4 B 1
5 C 1
6 D 1
7 B 2
8 D 2
9 C 2
10 B 3





Il faut utiliser une sous requête...

Si la table se nomme "LaTable" et les champs A, B et C...
et que l'on utilise deux Alias sur cette table, TA pour la requête
principale et TB pour la sous-requête.

SELECT TA.A, TA.B,
(Select count(B) from LaTable TB
Where (TB.B=TA.B) AND (TB.A <= TA.A)) AS C
FROM LaTable AS TA
ORDER BY TA.A;

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)



Re-bonjour,

Suis-je obligé de passé en SQL direct ou puis-je utilisé la création de
réquête graphique car je ne maitrise un peu les requêtes via l'interface
graphique mais absolument pas le SQL ?

Merci sinon déjà de ta premiére réponse

Francky de Lille
Francky de Lille
Le #19951841
"Francky de Lille" 4a8ba8bb$0$713$
Bonjour

"3stone"
Salut,

Francky de Lille wrote:
Bonjour,

Je voudrais créer un tri partiel dans une table, je m'explique :

soit la table suivante
Colonne A Colonne B
1 A
2 A
3 A
4 B
5 C
6 D
7 B
8 D
9 C
10 B

Je voudrais avoir cela
Colonne A Colonne B Colonne C
1 A 1
2 A 2
3 A 3
4 B 1
5 C 1
6 D 1
7 B 2
8 D 2
9 C 2
10 B 3





Il faut utiliser une sous requête...

Si la table se nomme "LaTable" et les champs A, B et C...
et que l'on utilise deux Alias sur cette table, TA pour la requête
principale et TB pour la sous-requête.

SELECT TA.A, TA.B,
(Select count(B) from LaTable TB
Where (TB.B=TA.B) AND (TB.A <= TA.A)) AS C
FROM LaTable AS TA
ORDER BY TA.A;

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)





Bon j'essaye de comprendre le cheminement mais je ne comprends pas très
bien.

ta sous -requête compte-t-elle le nombre d'occurence de la colonne B
Tel que
Colonne 1 Colonne 2
A 3
B 3
C 2
D 2

Parce-que après je ne sais pas vraiment comment tu l'imbriques dans ta
requête principale
Michel__D
Le #19952971
Bonjour,

"Francky de Lille"
Bonjour,

Je voudrais créer un tri partiel dans une table, je m'explique :

soit la table suivante
Colonne A Colonne B
1 A
2 A
3 A
4 B
5 C
6 D
7 B
8 D
9 C
10 B

Je voudrais avoir cela
Colonne A Colonne B Colonne C
1 A 1
2 A 2
3 A 3
4 B 1
5 C 1
6 D 1
7 B 2
8 D 2
9 C 2
10 B 3

J'ai essayer de faire une requête avec un champs calculé mais j'ai pas réussi.

Si quelqun à une idée pour m'aider merci d'avance

Franck



Essaye avec cette requête en mode SQL :

SELECT T1.ColonneA, T1.ColonneB, Count(T2.ColonneB) AS ColonneC
FROM LaTable AS T1 INNER JOIN LaTable AS T2
ON T1.ColonneB = T2.ColonneB And T1.ColonneA >= T2.ColonneA
GROUP BY T1.ColonneB, T1.ColonneA
ORDER BY T1.ColonneA;
3stone
Le #19954851
Salut,

Francky de Lille wrote:
[...]
Bon j'essaye de comprendre le cheminement mais je ne comprends pas
très bien.

ta sous -requête compte-t-elle le nombre d'occurence de la colonne B
Tel que
Colonne 1 Colonne 2
A 3
B 3
C 2
D 2

Parce-que après je ne sais pas vraiment comment tu l'imbriques dans ta
requête principale




- La sous-requête te crées le champ "C"

- Oui, tu peux créer cela dans la grille du requêteur, comme te
le montre cette image vite fait...

http://cjoint.com/?itsgeGuGfs

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Francky de Lille
Le #19957211
"Michel__D" news: h6gldt$tn2$
Bonjour,

"Francky de Lille" news: 4a8b12ea$0$1571$
Bonjour,

Je voudrais créer un tri partiel dans une table, je m'explique :

soit la table suivante
Colonne A Colonne B
1 A
2 A
3 A
4 B
5 C
6 D
7 B
8 D
9 C
10 B

Je voudrais avoir cela
Colonne A Colonne B Colonne C
1 A 1
2 A 2
3 A 3
4 B 1
5 C 1
6 D 1
7 B 2
8 D 2
9 C 2
10 B 3

J'ai essayer de faire une requête avec un champs calculé mais j'ai pas
réussi.

Si quelqun à une idée pour m'aider merci d'avance

Franck



Essaye avec cette requête en mode SQL :

SELECT T1.ColonneA, T1.ColonneB, Count(T2.ColonneB) AS ColonneC
FROM LaTable AS T1 INNER JOIN LaTable AS T2
ON T1.ColonneB = T2.ColonneB And T1.ColonneA >= T2.ColonneA
GROUP BY T1.ColonneB, T1.ColonneA
ORDER BY T1.ColonneA;




Merci Michel ca fonctionne ompect, bon j'ai pas tout compris pourquoi mais
j'essaye de déchifrer.
Est ce que le regroupement est obligatoire ? puisque la colonne A est un
numéroauto?
Francky de Lille
Le #19957271
"Michel__D" news: h6gldt$tn2$
Bonjour,

"Francky de Lille" news: 4a8b12ea$0$1571$
Bonjour,

Je voudrais créer un tri partiel dans une table, je m'explique :

soit la table suivante
Colonne A Colonne B
1 A
2 A
3 A
4 B
5 C
6 D
7 B
8 D
9 C
10 B

Je voudrais avoir cela
Colonne A Colonne B Colonne C
1 A 1
2 A 2
3 A 3
4 B 1
5 C 1
6 D 1
7 B 2
8 D 2
9 C 2
10 B 3

J'ai essayer de faire une requête avec un champs calculé mais j'ai pas
réussi.

Si quelqun à une idée pour m'aider merci d'avance

Franck



Essaye avec cette requête en mode SQL :

SELECT T1.ColonneA, T1.ColonneB, Count(T2.ColonneB) AS ColonneC
FROM LaTable AS T1 INNER JOIN LaTable AS T2
ON T1.ColonneB = T2.ColonneB And T1.ColonneA >= T2.ColonneA
GROUP BY T1.ColonneB, T1.ColonneA
ORDER BY T1.ColonneA;




Cela fonctionne mais il me demande à chaque ouverture de la requête une
valeur de paramètre pour _T2.ColonneB ?
Comment est-ce que cela se fait ?

Franck
Michel__D
Le #19958321
Bonjour,

"Francky de Lille"

"Michel__D"
Bonjour,

"Francky de Lille"
Bonjour,

Je voudrais créer un tri partiel dans une table, je m'explique :

soit la table suivante
Colonne A Colonne B
1 A
2 A
3 A
4 B
5 C
6 D
7 B
8 D
9 C
10 B

Je voudrais avoir cela
Colonne A Colonne B Colonne C
1 A 1
2 A 2
3 A 3
4 B 1
5 C 1
6 D 1
7 B 2
8 D 2
9 C 2
10 B 3

J'ai essayer de faire une requête avec un champs calculé mais j'ai pas réussi.

Si quelqun à une idée pour m'aider merci d'avance

Franck



Essaye avec cette requête en mode SQL :

SELECT T1.ColonneA, T1.ColonneB, Count(T2.ColonneB) AS ColonneC
FROM LaTable AS T1 INNER JOIN LaTable AS T2
ON T1.ColonneB = T2.ColonneB And T1.ColonneA >= T2.ColonneA
GROUP BY T1.ColonneB, T1.ColonneA
ORDER BY T1.ColonneA;




Cela fonctionne mais il me demande à chaque ouverture de la requête une valeur de paramètre pour _T2.ColonneB ?
Comment est-ce que cela se fait ?

Franck



Erreur de saisie de ta part car il n'y a pas d'alias de table [_T2] par contre il y a
bien un alias de table nommé [T2]

PS:Il faut bien entendu aussi adapter le nom des champs utilisé.
Michel__D
Le #19958311
Bonjour,

"Francky de Lille"

"Michel__D"
Bonjour,

"Francky de Lille"
Bonjour,

Je voudrais créer un tri partiel dans une table, je m'explique :

soit la table suivante
Colonne A Colonne B
1 A
2 A
3 A
4 B
5 C
6 D
7 B
8 D
9 C
10 B

Je voudrais avoir cela
Colonne A Colonne B Colonne C
1 A 1
2 A 2
3 A 3
4 B 1
5 C 1
6 D 1
7 B 2
8 D 2
9 C 2
10 B 3

J'ai essayer de faire une requête avec un champs calculé mais j'ai pas réussi.

Si quelqun à une idée pour m'aider merci d'avance

Franck



Essaye avec cette requête en mode SQL :

SELECT T1.ColonneA, T1.ColonneB, Count(T2.ColonneB) AS ColonneC
FROM LaTable AS T1 INNER JOIN LaTable AS T2
ON T1.ColonneB = T2.ColonneB And T1.ColonneA >= T2.ColonneA
GROUP BY T1.ColonneB, T1.ColonneA
ORDER BY T1.ColonneA;




Merci Michel ca fonctionne ompect, bon j'ai pas tout compris pourquoi mais j'essaye de déchifrer.
Est ce que le regroupement est obligatoire ? puisque la colonne A est un numéroauto?



Vu que tu utilise une fonction de regroupement sur une sélection d'enregistrement
le regroupement est obligatoire, d'ailleurs le plus simple est de faire le test toi-même.
Francky de Lille
Le #19958731
"Michel__D" news: h6jb09$l2u$
Bonjour,

"Francky de Lille" message de news: 4a8cfd9c$0$10820$

"Michel__D" de news: h6gldt$tn2$
Bonjour,

"Francky de Lille" news: 4a8b12ea$0$1571$
Bonjour,

Je voudrais créer un tri partiel dans une table, je m'explique :

soit la table suivante
Colonne A Colonne B
1 A
2 A
3 A
4 B
5 C
6 D
7 B
8 D
9 C
10 B

Je voudrais avoir cela
Colonne A Colonne B Colonne C
1 A 1
2 A 2
3 A 3
4 B 1
5 C 1
6 D 1
7 B 2
8 D 2
9 C 2
10 B 3

J'ai essayer de faire une requête avec un champs calculé mais j'ai pas
réussi.

Si quelqun à une idée pour m'aider merci d'avance

Franck



Essaye avec cette requête en mode SQL :

SELECT T1.ColonneA, T1.ColonneB, Count(T2.ColonneB) AS ColonneC
FROM LaTable AS T1 INNER JOIN LaTable AS T2
ON T1.ColonneB = T2.ColonneB And T1.ColonneA >= T2.ColonneA
GROUP BY T1.ColonneB, T1.ColonneA
ORDER BY T1.ColonneA;




Merci Michel ca fonctionne ompect, bon j'ai pas tout compris pourquoi
mais j'essaye de déchifrer.
Est ce que le regroupement est obligatoire ? puisque la colonne A est un
numéroauto?



Vu que tu utilise une fonction de regroupement sur une sélection
d'enregistrement
le regroupement est obligatoire, d'ailleurs le plus simple est de faire le
test toi-même.




Ben oui c'erst après avoir envoyé mon msg que je m'en suis apperçu ;-)
Publicité
Poster une réponse
Anonyme