Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Tri partiel dans une table

12 réponses
Avatar
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

10 réponses

1 2
Avatar
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)
Avatar
Francky de Lille
Bonjour

"3stone" a écrit dans le message de news:

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
Avatar
Francky de Lille
"Francky de Lille" a écrit dans le message de news:
4a8ba8bb$0$713$
Bonjour

"3stone" a écrit dans le message de news:

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
Avatar
Michel__D
Bonjour,

"Francky de Lille" a écrit dans le message de 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;
Avatar
3stone
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)
Avatar
Francky de Lille
"Michel__D" a écrit dans le message de
news: h6gldt$tn2$
Bonjour,

"Francky de Lille" a écrit dans le message de
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?
Avatar
Francky de Lille
"Michel__D" a écrit dans le message de
news: h6gldt$tn2$
Bonjour,

"Francky de Lille" a écrit dans le message de
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
Avatar
Michel__D
Bonjour,

"Francky de Lille" a écrit dans le message de news: 4a8d0009$0$20867$

"Michel__D" a écrit dans le message de news: h6gldt$tn2$
Bonjour,

"Francky de Lille" a écrit dans le message de 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



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é.
Avatar
Michel__D
Bonjour,

"Francky de Lille" a écrit dans le message de news: 4a8cfd9c$0$10820$

"Michel__D" a écrit dans le message de news: h6gldt$tn2$
Bonjour,

"Francky de Lille" a écrit dans le message de 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.
Avatar
Francky de Lille
"Michel__D" a écrit dans le message de
news: h6jb09$l2u$
Bonjour,

"Francky de Lille" a écrit dans le
message de news: 4a8cfd9c$0$10820$

"Michel__D" a écrit dans le message
de news: h6gldt$tn2$
Bonjour,

"Francky de Lille" a écrit dans le message de
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 ;-)
1 2