SQL et jointure

soupiste Messages postés 79 Date d'inscription samedi 12 avril 2008 Statut Membre Dernière intervention 22 juin 2011 - 4 sept. 2009 à 16:24
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 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])

ADJACENCES_ATOLL (CELL_IDM, EMETTEUR, Voisine, Symétrie)

il y a d'autres éléments dans les tables, mais elles ne sont très importante pour ce que je cherche !

Un coup de pousse je vous en prie !!!!!!!!!!!

2 réponses

soupiste Messages postés 79 Date d'inscription samedi 12 avril 2008 Statut Membre Dernière intervention 22 juin 2011
4 sept. 2009 à 17:45
personne pour me répondre !!!!
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
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
0
Rejoignez-nous