UNION sans tri

Le
le Nordiste
Bonjour,

J'ai trois tables T_1, T_2 et T_3 avec le même nombre de champs
( sinon UNION impossible).

Je veux faire quelque chose comme :

(SELECT T_1.* FROM T_1……
UNION
SELECT T_2.* FROM T_2……
ORDER BY T_1.champ_1)
UNION
SELECT T_3.* FROM T_3……

C'est à dire faire l'union ordonnée des deux premières tables,
puis faire l'union avec la 3éme table, SANS retrier le résultat.

Merci pour votre aide,
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
db
Le #22603481
Le 23/09/2010 16:10, le Nordiste a écrit :
Bonjour,

J'ai trois tables T_1, T_2 et T_3 avec le même nombre de champs
( sinon UNION impossible).

Je veux faire quelque chose comme :

(SELECT T_1.* FROM T_1……
UNION
SELECT T_2.* FROM T_2……
ORDER BY T_1.champ_1)
UNION
SELECT T_3.* FROM T_3……

C'est à dire faire l'union ordonnée des deux premières tables,
puis faire l'union avec la 3éme table, SANS retrier le résultat.

Merci pour votre aide,




Voici une proposition : ajouter une constante dans le select :

SELECT "A" AS TRI,T_1.* FROM T_1
UNION
SELECT "A" AS TRI,T_2.* FROM T_2
UNION
SELECT "B" AS TRI,T_3.* FROM T_3
ORDER BY TRI,champ_1

les deux tables T1 et T2 devraient bien apparaître au début, triée sur
le champ 1, ...mais la 3ème table sera aussi triée sur le champ1.

db
le Nordiste
Le #22603581
C'est une solution, je vais tester…
Je pensais pouvoir résoudre ce probléme par la BONNE syntaxe.

Merci du coup de main.
db
Le #22603741
Le 23/09/2010 16:56, le Nordiste a écrit :
C'est une solution, je vais tester…
Je pensais pouvoir résoudre ce probléme par la BONNE syntaxe.



(Sur l'air de "Il est pas frais mon poisson") : elle est pas bonne, ma
syntaxe ? :-)

Plaisanterie à part, je ne suis pas sûr qu'il existe une bonne syntaxe
pour trier une UNION avant d'en rajouter une autre. Mais peut-être les
spécialistes ont-ils une solution.

db
3stone
Le #22604321
Salut,

le Nordiste wrote:
Bonjour,

J'ai trois tables T_1, T_2 et T_3 avec le même nombre de champs
( sinon UNION impossible).

Je veux faire quelque chose comme :

(SELECT T_1.* FROM T_1……
UNION
SELECT T_2.* FROM T_2……
ORDER BY T_1.champ_1)
UNION
SELECT T_3.* FROM T_3……

C'est à dire faire l'union ordonnée des deux premières tables,
puis faire l'union avec la 3éme table, SANS retrier le résultat.




Une requête union porte bien son nom... et le tri se fait
toujours sur toute la "pile" et nom par requête.

La seule solution est celle donnée, c'est à dire :
- distinguer les résultats de chaque requête en ajoutant un champ
(préférer un numérique pour sa rapidité de traitement)
- trier sur ce champ, puis sur le champ secondaire.

donc, comme proposé :

SELECT 1 AS TRI, T_1.* FROM T_1
UNION
SELECT 2 AS TRI, T_2.* FROM T_2
UNION
SELECT 3 AS TRI, T_3.* FROM T_3
ORDER BY TRI, champ_1

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
blaise cacramp
Le #22608501
Bonjour le Nordiste,

Je ne suis pas du tout spécialiste des requêtes UNION mais je propose cette
idée :
Une première requête avec les deux 1ères tables triées;
puis une seconde UNION à partir de cette 1ère requête et de la 3ème table.


Cdt, Blaise

"le Nordiste"
Bonjour,

J'ai trois tables T_1, T_2 et T_3 avec le même nombre de champs
( sinon UNION impossible).

Je veux faire quelque chose comme :

(SELECT T_1.* FROM T_1……
UNION
SELECT T_2.* FROM T_2……
ORDER BY T_1.champ_1)
UNION
SELECT T_3.* FROM T_3……

C'est à dire faire l'union ordonnée des deux premières tables,
puis faire l'union avec la 3éme table, SANS retrier le résultat.

Merci pour votre aide,
le Nordiste
Le #22619241
Je ne suis pas du tout spécialiste des requêtes UNION mais je propose cette
idée :
Une première requête avec les deux 1ères tables triées;
puis une seconde UNION à partir de cette 1ère requête et de la 3è me table.



C'est ce que je faisais mais comme dit plus haut par 3stone
"Une requête union porte bien son nom... et le tri se fait
toujours sur toute la "pile" et nom par requête."

Moi qui croyais que les parenthéses marquaient les limites d'un
traitement,

(SELECT T_1.* FROM T_1……
UNION
SELECT T_2.* FROM T_2…
ORDER BY T_1.champ_1) fin du premier UNION et donc du tri

UNION
SELECT T_3.* FROM T_3…… second UNION SANS TRI

pauvre naïf que je suis…

merci de vos contributions
blaise cacramp
Le #22624231
3stone a *toujours* raison ;-)

"le Nordiste"
Je ne suis pas du tout spécialiste des requêtes UNION mais je propose
cette
idée :
Une première requête avec les deux 1ères tables triées;
puis une seconde UNION à partir de cette 1ère requête et de la 3ème table.



C'est ce que je faisais mais comme dit plus haut par 3stone
"Une requête union porte bien son nom... et le tri se fait
toujours sur toute la "pile" et nom par requête."

Moi qui croyais que les parenthéses marquaient les limites d'un
traitement,

(SELECT T_1.* FROM T_1……
UNION
SELECT T_2.* FROM T_2…
ORDER BY T_1.champ_1) fin du premier UNION et donc du tri

UNION
SELECT T_3.* FROM T_3…… second UNION SANS TRI

pauvre naïf que je suis…

merci de vos contributions
Publicité
Poster une réponse
Anonyme