Combinaison de select

pagnah Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   -  
Heremion Messages postés 538 Date d'inscription   Statut Membre Dernière intervention   -
Bonsoir,

je vais aller droit au but, j'ai une table 'correct' avec 3 champs :

NUM_DEBITE; MT_DEBITE; C_REST

je voudrais fusionner ces deux select à savoir :

SELECT MT_DEBITE from correct WHERE MT_DEBITE>=C_REST

SELECT C_REST from correct WHERE MT_DEBITE<=C_REST

et avoir un seul champ avec la fusion des résultat des deux champs, c'est à dire à chaque ligne lu, il fait la comparaison et donne selon les deux en fonction du select.
J'ai essayer avec union mais çà ne me donne pas le résultat que je voudrais, j'aimerais bien avoir un coup de main afin que je puisse avancer dans mon projet, merci bien à tous.

5 réponses

DROE Messages postés 148 Date d'inscription   Statut Membre Dernière intervention   48
 
Pagnah,

Si un Union ne te conviens pas, montre moi un exmple de ce que tu désires en sortie à partir de cet exemple

SQL> SELECT * FROM CORRECT;

NUM_DEBITE  MT_DEBITE     C_REST
---------- ---------- ----------
         1        100        101
         2         20         19
         3        200        150

SQL>

SQL> SELECT MT_DEBITE AS "Transaction" FROM scott.correct WHERE MT_DEBITE>=C_REST
  2  UNION
  3  SELECT C_REST AS "Transaction" FROM scott.correct WHERE MT_DEBITE<=C_REST;

Transaction
-----------
         20
        101
        200

SQL>


DROE
0
pagnah Messages postés 18 Date d'inscription   Statut Membre Dernière intervention  
 
bonjour, voici un peu ce que je voudrais :

NUM_DEBITE MT_DEBITE C_REST
---------- ---------- ----------
1 100 101
2 19 20
3 200 150
4 100 90
5 8 19
6 200 120



et je voudrais avoir ceci comme résultat tel quel avec les doublons:

Transaction
-----------
100
20
200
100
19
200

qd je fais
SELECT MT_DEBITE AS "Transaction" FROM correct WHERE MT_DEBITE>=C_REST
2 UNION
3 SELECT C_REST AS "Transaction" FROM correct WHERE MT_DEBITE<=C_REST;


les doublons sont supprimés et quand je fais avec UNION ALL les reusltat sont dupliqués, je ne sais pas si tu arriveras à comprendre avec tout mon charabia là, merci bien
0
blux Messages postés 27144 Date d'inscription   Statut Modérateur Dernière intervention   3 362
 
Salut,

c'est quel SQL ? car tu as peut-être des prédicats de comparaison utilisables dans un SELECT.
0
Utilisateur anonyme
 
Bonjour

Si c'est avec mySQL, tu as la fonction GREATEST :
SELECT GREATEST(MT_DEBITE,C_REST) FROM correct


Si tu n'as pas de fonction GREATEST, tu peux la simuler avec la valeur absolue et un tout petit peu d'arithmétique :
SELECT (MT_DEBITE+C_REST + ABS(MT_DEBITE-C_REST))/2 FROM correct
0
blux Messages postés 27144 Date d'inscription   Statut Modérateur Dernière intervention   3 362
 
N'empêche que s'il met un >= et un <= dans les deux requêtes, ça va pas le faire...
Sinon, en SQL access, il y a la fonction IIF(test,valeur1,valeur2)...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Heremion Messages postés 538 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour Pagnah,

Pourquoi ne pas faire un truc du genre :

SELECT  num_debite AS num,
              mt_debite AS mt
FROM     ta_table
WHERE  mt_debite > c_rest

UNION

SELECT  num_debite AS num,
              c_rest AS mt
FROM    ta_table
WHERE   mt_debite <= c_rest)
0