Bonjour à tous,
je cherche a obtenir côte a côte le résultat de 2 requêtes distinctes, sans jointure !
Pour info, j'utilise PostegreSQL.
Voici les deux requêtes SQL :
Et la suivante, qui diffère uniquement sur la dernière condition du WHERE :SELECT fp_folio, mo_monto
FROM pro_folio_programa
INNER JOIN pro_movimiento ON mo_programa = fp_programa AND mo_subprograma = fp_subprograma AND mo_ano = fp_ano AND mo_folio = fp_folio AND mo_anofolio = fp_anofolio
WHERE fp_programa = 5 AND fp_subprograma = 'A' AND fp_ano = 2008 AND fp_anofolio = 2009 AND mo_cuenta = 3
AND mo_imputa = 'D'
ORDER BY fp_folio, mo_cuenta;
J'obtiens séparément deux tables résultat sous la forme :SELECT fp_folio, mo_monto
FROM pro_folio_programa
INNER JOIN pro_movimiento ON mo_programa = fp_programa AND mo_subprograma = fp_subprograma AND mo_ano = fp_ano AND mo_folio = fp_folio AND mo_anofolio = fp_anofolio
WHERE fp_programa = 5 AND fp_subprograma = 'A' AND fp_ano = 2008 AND fp_anofolio = 2009 AND mo_cuenta = 3
AND mo_imputa = 'H'
ORDER BY fp_folio, mo_cuenta;
Il s'agit en fait des mouvements bancaires d'un compte, la 1ere table donnant les mouvements entrants, la 2eme les mouvements sortants.fp_folio | mo_monto
1 | 100
fp_folio | mo_monto
2 | 200
3 | 300
Mon but est d'obtenir une seule table de la forme :
Une des difficulté majeure se trouve dans le fait que les deux requêtes ne donnent pas le même nombre de ligne. Évidement puisqu'il n'y pas de raison que vous ayez dépensé de l'argent autant de FOIS que vous en avez reçu.fp_folio | mo_monto | fp_folio | fp_monto
2 | 200 | 1 | 100
3 | 300 | 0 | 0
L'autre est de "coller" le résultat de la seconde requête à droite de la première sans avoir a les joindre, et de remplir les dernières lignes vide d'une des deux requêtes (celle qui a la moins de ligne) par des 0.
On m'a suggéré de chercher du côté des CURSOR mais j'ai beau avoir fait suer Google et mangé des tutoriels sur le sujet, je ne suis arrivé à rien.
Voila, si quelqu'un peut me guider, d'avance merci,
Cyrille
Partager