soupiste
Messages postés79Date d'inscriptionsamedi 12 avril 2008StatutMembreDernière intervention22 juin 2011
-
4 sept. 2009 à 16:24
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 2014
-
4 sept. 2009 à 19:36
Bonjour à tous !
déjà 3 jours que je butte sur une requête qui bien que me semblant correcte ne me donne pas le résultat recherché.
J'ai 2 table : ADJACENCES_ATOLL et ALL_ASYMETRIES
Dans ces 2 tables, il y a des données qui correspondent par leur Identité (CELL_IDM et CELL_IDENTITY).
Alors, je veux faire ressortir les éléments de ADJACENCES_ATOLL qui ne sont pas contenus dans ALL_ASYMETRIES et vice versa, de même que les éléments qui correspondent au sein de ces 2 tables.
Pour cela, je fais une jointure externe avec:
1- left outer join pour récupérer les élément de ADJACENCES_ATOLL non contenus dans ALL_ASYMETRIES
[i][b]select distinct * from (
select * from
(select CELL_IDM, Emetteur, Voisine, TYPE_RELATION, Symétrie from ADJACENCES_ATOLL) b
left outer join
(select CELL_IDENTITY, CELL_SERVEUSE, [VOISINE DECLAREE], [CELLULE CIBLE], [ETAT SYMETRIE] from ALL_ASYMETRIES) a
on b.CELL_IDM = a.CELL_IDENTITY
and b.Emetteur = a.CELL_SERVEUSE
and b.Voisine = a.[VOISINE DECLAREE])n;/b/i
2 - Ensuite, un Right outer join pour ceux de ALL_ASYMETRIES non contenus dans ADJACENCES_ATOLL
la même requête mais avec des inversion des tables concernées
3 - un Full outer qui me donne à la fois les correspondances entre les 2 tables, et les éléments manquant de chacun des côtés !
Mais, rien ne marche ! Je n'obtiens pas les résultats recherchés ! Peut être que ma(es) condition (s) de jointure ne sont pas bien définies, je ne sais plus rien !
Aidez moi s'il vous plait !
Il me faut trouver le résultat avant la fin du service, sinon mon chef me tuerait !
voici un aperçu de mes tables CELL_IDENTITY:
ALL_ASYMETRIES (CELL_IDENTITY, CELL_SERVEUSE, [VOISINE DECLAREE], [ETAT SYMETRIE])
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 4 sept. 2009 à 19:36
Alors, je veux faire ressortir les éléments de ADJACENCES_ATOLL qui ne sont pas contenus dans ALL_ASYMETRIES et vice versa, de même que les éléments qui correspondent au sein de ces 2 tables.
Si je traduit, tu veux une requête avec tous les éléments de ADJACENCES_ATOLL sans correspondance dans ALL_ASYMETRIES et tous ceux ayant une correspondances (soit tous les éléments de ADJACENCES_ATOLL), tous les éléments de ALL_ASYMETRIES sans correspondance dans ADJACENCES_ATOLL et tous ceux ayant une correspondances (soit tous les éléments de ALL_ASYMETRIES)
Tu veux donc tous les éléments de ADJACENCES_ATOLL et tous les éléments de ALL_ASYMETRIES ? soit une requête CROSS JOIN.
Ou faut-il comprendre que tu veux en fait 3 requêtes, ce qui me semblerais plus logique :
1- SELECT * FROM ADJACENCES_ATOLL WHERE CELL_IDM NOT IN (SELECT CELL_IDENTITY FROM ALL_ASYMETRIES WHERE CELL_IDENTITY IS NOT NULL)
2- SELECT * FROM ADJENCES_ATOLL a INNER JOIN ALL_SYMETRIES b on a.CELL_IDM=b.CELL_IDENTITY
3- SELECT * FROM ADJENCES_ATOLL a FULL OUTER JOIN ALL_SYMETRIES b on a.CELL_IDM=b.CELL_IDENTITY
Sachant que les résultats de la requête 3 vont inclures ceux de la requête 1 et ceux de la requête 2
[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i