UNION : ordre de calcul et/ou d'affichage

Le
le Nordiste
Bonjour tertous,

J'ai une requête UNION : MaRequete_1 UNION MaRequete_2

MaRequete_1 fait la synthése d'une table,
MaRequete_2 fait les totaux par champ de MaRequete_2

J'ai systématiquement mes totaux en 1ére ligne du résultat, que je
fasse
MaRequete_1 UNION MaRequete_2 ou MaRequete_2 UNION MaRequete_1.

Il me semblait que SQL traitait dans l'ordre de lecture les requêtes.

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
3stone
Le #21694041
Salut,

le Nordiste wrote:
J'ai une requête UNION : MaRequete_1 UNION MaRequete_2

MaRequete_1 fait la synthése d'une table,
MaRequete_2 fait les totaux par champ de MaRequete_2

J'ai systématiquement mes totaux en 1ére ligne du résultat, que je
fasse
MaRequete_1 UNION MaRequete_2 ou MaRequete_2 UNION MaRequete_1.

Il me semblait que SQL traitait dans l'ordre de lecture les requêtes.




Pour une requête UNION, il faut le même nombre et le même type
de champs pour que cela fonctionne...

S'il faut un tri, tu ne pourras l'appliqué que sur la totalité des
enregistrements retournés.
Donc, impossible de faire quelque chose comme:
Select * From table1 Orderby a
UNION
Select * from table2 Orderby b

Mais, on peut parfois contourner en créant un champ
calculé dans chaque requête, du style:

Select 0 As Toto, c1, c2 From table1
union
Select 1 As Toto, c1, c2 from table2 orderby Toto

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

Tes explications m'ont éclairé sur une solution possible ;
mais mon Pb du moment n'est pas résolu pour autant:

J'ai bien :
Pour une requête UNION, il faut le même nombre et le même type
de champs pour que cela fonctionne...



mais j'ai systématiquement ma ligne TOTAL en 1ére ligne du résultat
quelquesoit l'ordre des deux requêtes.

Comment faire pour que le résultat de "MaRequete_1 UNION MaRequete_2 "
donne sur dans l'ordre vertical :

le résultat de MaRequete_1
et dessous
le résultat deMaRequete_2


Merc i de consacrer ton temps à mes petits soucis.
3stone
Le #21956091
Salut,

le Nordiste wrote:
Tes explications m'ont éclairé sur une solution possible ;
mais mon Pb du moment n'est pas résolu pour autant:

J'ai bien :
Pour une requête UNION, il faut le même nombre et le même type
de champs pour que cela fonctionne...



mais j'ai systématiquement ma ligne TOTAL en 1ére ligne du résultat
quelquesoit l'ordre des deux requêtes.

Comment faire pour que le résultat de "MaRequete_1 UNION MaRequete_2 "
donne sur dans l'ordre vertical :

le résultat de MaRequete_1
et dessous
le résultat deMaRequete_2




Tu dis: "ma ligne TOTAL"

Une des requête est une requête regroupement et ne te ramène
qu'une seule ligne ?
Si oui, intègre un champ calculé comme expliqué avant
et sur lequel tu peux trier.
Tu peux éventuellement trier sur un second champ pour garder
un certain ordre dans la seconde requête en utilisant ceci:
http://www.3stone.be/access/articles.php?lng=fr&pg9
- le tout risque éventuelement de devenir un peu lent...

Ceci dit, je me demande si tu n'essaies pas de reproduire
ce que l'on obtient très facilement dans un état ;-)

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