Bonjour à tous,
J'ai un petit soucis pour alimenter une grille, en effet, initialement, j'ai utilisé une stringgrid pour charger des données en ajoutant successivement les 3 requêtes ci-dessous :
Requête 1:
Requête 2:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 select field1, field2, field3 from table1 where conditions1 order by ordre1
Requête 3:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 select field1, field2, field3 from table1 where conditions2 order by ordre2
J'avais donc d'abord dans ma grille le résultat de la requête 1 puis de la requête 2 et enfin de la requête 3.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 select field1, field2, field3 from table1 where conditions3 order by ordre3
Ça fonctionnait mais l'affichage est très lent.....
Je veux donc passer par une dbgrid alimentée par une query, j'ai donc imaginé regrouper les 3 requêtes par n'en faire qu'une et faire un union entre elles de ce type :
Malheureusement, j'ai systématiquement une erreur si je mets les "order by" des sous requêtes et si je les supprime, j'obtiens bien les bonnes données (nombre de lignes et informations) mais pas dans l'ordre des requêtes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 select 1 ORDRE, field1, field2, field3 from table1 where conditions1 order by ordre1 union ( select 2 ORDRE, field1, field2, field3 from table1 where conditions2 order by ordre2 ) union ( select 3 ORDRE, field1, field2, field3 from table1 where conditions3 order by ordre3 ) order by ORDRE
Avez-vous une idée pour répondre à ce petit problème ?
Merci d'avance pour votre aide.
Pour info: IDE: Delphi, BD: SQLServer
Partager