Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/05/2011, 12h19   #1
Invité de passage
 
Inscription : septembre 2009
Messages : 12
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 12
Points : 2
Points : 2
Par défaut [2008R2] Liaison Oracle - Requête SQL

Bonjour à tous,

J'ai un petit soucis sous sql server 2008R2 pour faire une requête sous un un serveur oracle.

Ma requête est faite sous toad, et fonctionne.

Mon but serai de créer une table contenant le résultat de ma requête sous sql server.

Déjà, j'essaye de faire la requête sélection ...

Code :
1
2
3
 
SELECT * FROM 
OPENQUERY(SEVEURoRACLE, "Requête sql oracle") ;
Le soucis, c'est qu'il me sort un problème de longueur de requête ... Celle ci faisant 720 caractères ...

Qui aurai une idée ?

Merci d'avance !

CG
cgair est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2011, 14h37   #2
Expert Confirmé
 
Avatar de 7gyY9w1ZY6ySRgPeaefZ
 
Homme
dba
Inscription : juillet 2007
Messages : 2 520
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : dba

Informations forums :
Inscription : juillet 2007
Messages : 2 520
Points : 3 967
Points : 3 967
Et avec cette syntaxe ?

Code :
1
2
SELECT * FROM 
OPENQUERY( "MACHINE_ORACLE", 'select * from dual')
__________________
les règles du forum - mode d'emploi du forum
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs.
(Rappel : "ça ne marche pas" n'est pas un message d'erreur)
JE NE RÉPONDS PAS aux questions techniques par message privé.
Écrire en français sur un forum est une marque minimale de respect.
7gyY9w1ZY6ySRgPeaefZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2011, 14h55   #3
Invité de passage
 
Inscription : septembre 2009
Messages : 12
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 12
Points : 2
Points : 2
Bonjour !

J'y avait penser ... Seul soucis, c'est la taille de la table dans oracle ... plus de 250Gb ...

En plus, cette table oracle possède une architecture en "arbre" je crois. Sachant que dans ma requete oracle, je fais un tri ...

Voici la requête :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
SELECT 
    DI1.DEM_ID,
    DI1.DI_VALUE AS CLIENT,
    DI2.DI_VALUE AS STATUT,
    DI3.DI_VALUE AS CONTRAT,
    DI4.DI_VALUE AS ID
 
FROM
( 
    (ORACLE.DEMANDES DI1 
        JOIN
    ORACLE.DEMANDES DI2
        ON
            DI1.DEM_ID = DI2.DEM_ID)
        JOIN
    ORACLE.DEMANDES DI3
        ON
            DI1.DEM_ID = DI3.DEM_ID)
        JOIN
            ORACLE.DEMANDES DI4
         ON DI1.DEM_ID = DI4.DEM_ID
WHERE 
 
        DI1.DI_PARAM = '/client' AND 
        DI1.DI_VALUE LIKE 'XXX%' AND
        DI2.DI_PARAM = '/status' AND
        DI3.DI_PARAM = '/id_commande' AND
        DI4.DI_PARAM = '/IDGEN';
Par exemple, pour un même ID, on a plusieurs paramètres avec différentes valeurs. Donc j'ai 4 liaisons sur cette table, avec donc trois jointures. Via toad, j'ai une exécution en un peu plus de 2 minutes ...
cgair est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2011, 15h24   #4
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 442
Points : 10 442
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Commencez déjà par améliorer votre requête, utilisez la méthode décrite dans ce sujet :
http://www.developpez.net/forums/d10...l/#post5959473

Si c'est un problème de longueur de requête, vous pouvez toujours créer une vue sur Oracle et faire un select sur celle-ci depuis SQL-Server.
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2011, 15h26   #5
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
Votre requete vous renvoie une seule ligne par DEM_ID ?

que donne celle-ci (qui est "Waldar certified" EDIT : lequel a posté entretemps...) niveau perf ?

Code SQL :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
SELECT 
    DEM_ID,
    MAX(
        CASE 
            WHEN  
                DI_PARAM = '/client' 
                AND DI_VALUE LIKE 'XXX%' 
            THEN DI_VALUE 
        END 
    ) AS CLIENT,
    MAX(CASE WHEN DI_PARAM = '/status' THEN DI_VALUE END) AS STATUT,
    MAX(CASE WHEN DI_PARAM =  '/id_commande' THEN DI_VALUE END) AS CONTRAT,
    MAX(CASE WHEN DI_PARAM =  '/IDGEN' THEN DI_VALUE END) AS ID
FROM
    ORACLE.DEMANDES 
WHERE 
     DI_PARAM IN ('/client', '/status','/id_commande', '/IDGEN')
GROUP BY DEM_ID
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 05/05/2011, 15h31   #6
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 442
Points : 10 442
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Bien vu aieeeuuuuu
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2011, 15h58   #7
Invité de passage
 
Inscription : septembre 2009
Messages : 12
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 12
Points : 2
Points : 2
Merci pour la requête oracle, c'est de l'optimisation.

Effectivement la requête est trop longue ... Le hic c'est que je ne suis pas admin de la base oracle, et demander une vue est chose longue, j'ai déjà essayer et abandonné vu les procédures qu'on me demande... C'est pour ça que je voulais utiliser la méthode serveur lié.
cgair est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2011, 16h21   #8
Invité de passage
 
Inscription : septembre 2009
Messages : 12
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 12
Points : 2
Points : 2
J'ai modifier la requête comme dit plus haut, ça fait 10 mn qu'elle tourne

Je vais me faire tapper sur les doigts pour l'occupation serveur
cgair est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 08h45   #9
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Architecte de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2004
Messages : 1 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
Citation:
J'ai modifier la requête comme dit plus haut, ça fait 10 mn qu'elle tourne

Je vais me faire tapper sur les doigts pour l'occupation serveur
Je suis quand même surpris de ne voir aucun 'vrai' prédicat dans votre WHERE... vous devez remonter tous les ID de la table de 2.5GO?
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 09h25   #10
Invité de passage
 
Inscription : septembre 2009
Messages : 12
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 12
Points : 2
Points : 2
En fait, la condition DI1.DI_VALUE LIKE 'XXX%' permet de filtrer 95% des lignes ...
cgair est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 09h27   #11
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Architecte de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2004
Messages : 1 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
Citation:
En fait, la condition DI1.DI_VALUE LIKE 'XXX%' permet de filtrer 95% des lignes ...
Oui mais SQL SERVER le sait il?
J'entends par là regardez le plan d'execution estimé et regardez si le nbr de ligne qu'il s'attend à retourner est correct...
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/05/2011, 10h27   #12
Invité de passage
 
Inscription : septembre 2009
Messages : 12
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 12
Points : 2
Points : 2
Le soucis est justement la dessus, je n'arrive pas à l'exécuter via le serveur lié ...

La seule méthode que j'ai trouver c'est comme suit sous sql-server ...

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
SELECT 
    DI1.DEM_ID,
    DI1.DI_VALUE AS CLIENT,
    DI2.DI_VALUE AS STATUT,
    DI3.DI_VALUE AS CONTRAT,
    DI4.DI_VALUE AS ID
 
FROM
( 
    (OPENQUERY(ORACLE, 'SELECT * FROM ORACLE.DEMANDES') DI1 
        JOIN
    OPENQUERY(ORACLE, 'SELECT * FROM ORACLE.DEMANDES') DI2
        ON
            DI1.DEM_ID = DI2.DEM_ID)
        JOIN
    OPENQUERY(ORACLE, 'SELECT * FROM ORACLE.DEMANDES') DI3
        ON
            DI1.DEM_ID = DI3.DEM_ID)
        JOIN
            OPENQUERY(ORACLE, 'SELECT * FROM ORACLE.DEMANDES') DI4
         ON DI1.DEM_ID = DI4.DEM_ID
WHERE 
 
        DI1.DI_PARAM = '/contrat/commande_client' AND
        DI1.DI_VALUE LIKE 'XXX%' AND
        DI2.DI_PARAM = '/line/status' AND
        DI2.DI_VALUE = 'A' AND
        DI3.DI_PARAM = '/id' AND
        DI3.DI_VALUE LIKE 'L%'
        DI4.DI_PARAM = '/contrat/id_service_administratif';
Mais pour le plan d'exécution, comme je fais aucune condition sur les OPENQUERY, il veut me sortir les quelques 200 000 000 de ligne que la table contient ...
cgair est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 11h12   #13
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 442
Points : 10 442
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Citation:
Envoyé par cgair Voir le message
En fait, la condition DI1.DI_VALUE LIKE 'XXX%' permet de filtrer 95% des lignes ...
Pouvez-vous publier un petit jeu de données ?
Ce filtre est effectivement essentiel, mais il faut s'assurer qu'avec la réécriture on peut le mettre dans le WHERE avec les autres filtres.

Plus fonctionnellement, ce filtre vous ne l'avez mis en place que pour le paramètre "/client". Est-il également valide pour les autres paramètres ?
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/05/2011, 11h49   #14
Invité de passage
 
Inscription : septembre 2009
Messages : 12
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 12
Points : 2
Points : 2
Actuellement, pour un dem_id on a :

DEM_ID DI_PARAM DI_VALUE
014242 /line/statut A
014242 /id L0754126
014242 /contrat/commande_client XXX01564891

Et ainsi de suite.

L'objectif étant d'avoir les infos sur une ligne pour un même dem_id.

Sinon, je voudrai savoir avec une variable, comment la mettre dans openquery ?

C'est à dire, imaginons la requête suivante :

Code :
1
2
3
4
5
6
7
8
 
SELECT 
     ID, 
     COMMANDE
FROM
     DEMANDES
WHERE
     COMMANDE LIKE 'XXX%';
Le soucis c'est que la requête que l'on place en argument dans openquery doit être sous la forme string.

J'ai testé :

Code :
1
2
3
4
5
 
DECLARE @rq
@rq = 'SELECT ID, COMMANDE FROM DEMANDES WHERE COMMANDE LIKE ' &char(39) &'XXX%' &char(39) &';' ;
 
SELECT * FROM OPENQUERY(ORACLE, @rq);
Mais il ne reconnais pas @rq ... Ne peut on pas faire un cast ?

merci d'avance ...
cgair est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 15h03   #15
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 442
Points : 10 442
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Ok, par rapport à vos données il vaut compléter la requête que vous a proposé aieeeuuuuu :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
  SELECT D1.DEM_ID
       , MAX(CASE D1.DI_PARAM WHEN '/client'      THEN D1.DI_VALUE END) AS CLIENT
       , MAX(CASE D1.DI_PARAM WHEN '/status'      THEN D1.DI_VALUE END) AS STATUT
       , MAX(CASE D1.DI_PARAM WHEN '/id_commande' THEN D1.DI_VALUE END) AS CONTRAT
       , MAX(CASE D1.DI_PARAM WHEN '/IDGEN'       THEN D1.DI_VALUE END) AS ID
    FROM ORACLE.DEMANDES D1
         INNER JOIN ORACLE.DEMANDES D2
           ON D2.DEM_ID = D1.DEM_ID
   WHERE D1.DI_PARAM IN ('/client', '/status','/id_commande', '/IDGEN')
     AND D2.DI_PARAM = '/client'
     AND D2.DI_VALUE LIKE 'XXX%'
GROUP BY D1.DEM_ID;
J'ai hésité entre la jointure et le exists, ça peut valoir le coup d'évaluer les deux, je la poste aussi, mais mon petit doigt m'oriente quand même sur la jointure :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
  SELECT D1.DEM_ID
       , MAX(CASE D1.DI_PARAM WHEN '/client'      THEN D1.DI_VALUE END) AS CLIENT
       , MAX(CASE D1.DI_PARAM WHEN '/status'      THEN D1.DI_VALUE END) AS STATUT
       , MAX(CASE D1.DI_PARAM WHEN '/id_commande' THEN D1.DI_VALUE END) AS CONTRAT
       , MAX(CASE D1.DI_PARAM WHEN '/IDGEN'       THEN D1.DI_VALUE END) AS ID
    FROM ORACLE.DEMANDES D1
   WHERE D1.DI_PARAM IN ('/client', '/status','/id_commande', '/IDGEN')
     AND EXISTS (SELECT NULL
                   FROM ORACLE.DEMANDES D2
                  WHERE D2.DI_PARAM = '/client'
                    AND D2.DI_VALUE LIKE 'XXX%'
                    AND D2.DEM_ID = D1.DEM_ID)
GROUP BY D1.DEM_ID;
Par contre vos critères ont bougé entre le début et la fin, je vous laisse adapter si besoin.
Une de ces requêtes doit aller plus vite que votre requête initiale.
Testez-la directement sous TOAD.
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/05/2011, 16h33   #16
Invité de passage
 
Inscription : septembre 2009
Messages : 12
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 12
Points : 2
Points : 2
Pour la première méthode 1 j'ai 7mn30 de traitement sous toad. Celle ci s'exécutant la nuit le weekend, c'est largement bon.

Maintenant reste à déterminer comment l'implémenter dans sql server...

Thx !
cgair est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 18h05   #17
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 442
Points : 10 442
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Oui enfin si votre requête précédente faisait deux minutes, ça ne va pas dans le bon sens.
Il faudrait tester les deux requêtes bout à bout pour avoir des conditions d'exécution relativement similaires.
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/05/2011, 18h11   #18
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Architecte de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2004
Messages : 1 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
Citation:
Oui enfin si votre requête précédente faisait deux minutes, ça ne va pas dans le bon sens.
Affichez les plans d'execution...

Citation:
Pour la première méthode 1 j'ai 7mn30 de traitement sous toad. Celle ci s'exécutant la nuit le weekend, c'est largement bon.

Maintenant reste à déterminer comment l'implémenter dans sql server...

Thx !
Après je suppose que vous stockez le résultat côté SQL SERVER est-ce vraiment utile de remettre 'en colonne' ces données côté ORACLE?

A voir si vous ne pourriez pas importer les données en lignes puis faire le traitement côté SQL SERVER sur des/une table(s) nettement plus petite(s).
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/05/2011, 18h18   #19
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
@Waldar, soit je ne comprends pas ta requête, soit je la comprend, et il y a une erreur car il me semble que le but de ta jointure était de traiter "à part" le cas "client" qui doit subir un filtre supplémentaire non ?!?

Code SQL :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
  SELECT D1.DEM_ID
       , MAX(D2.DI_VALUE) AS CLIENT
       , MAX(CASE D1.DI_PARAM WHEN '/status'      THEN D1.DI_VALUE END) AS STATUT
       , MAX(CASE D1.DI_PARAM WHEN '/id_commande' THEN D1.DI_VALUE END) AS CONTRAT
       , MAX(CASE D1.DI_PARAM WHEN '/IDGEN'       THEN D1.DI_VALUE END) AS ID
    FROM ORACLE.DEMANDES D1
         INNER JOIN ORACLE.DEMANDES D2
           ON D2.DEM_ID = D1.DEM_ID
   WHERE D1.DI_PARAM IN ( '/status','/id_commande', '/IDGEN')
     AND D2.DI_PARAM = '/client'
     AND D2.DI_VALUE LIKE 'XXX%'
GROUP BY D1.DEM_ID;
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/05/2011, 10h08   #20
Invité de passage
 
Inscription : septembre 2009
Messages : 12
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 12
Points : 2
Points : 2
Bonjour,

Alors voici le plan d'exécution que sqlserver me dit :



J'ai tenter une exécution cette nuit, au bout de 16heures d'exécution...

J'ai pas réussi à mettre en place les conditions, je vais tenter de le faire là. Voici la requête qui au bout de 16h, n'a rien donné (tourner toujours...)

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 
CREATE TABLE DSLACT(
	DEM_ID INT, 
	CMDE_CLIENT VARCHAR(20), 
	STAT_LIGNE VARCHAR(20), 
	CODE_CONTRAT VARCHAR(20), 
	MASTERID VARCHAR(20)
	)
SELECT 
    DI1.DEM_ID,
    DI1.DI_VALUE AS CMDE_CLIENT,
    DI2.DI_VALUE AS STAT_LIGNE,
    DI3.DI_VALUE AS CODE_CONTRAT,
    DI4.DI_VALUE AS MASTERID
 
FROM
( 
    OPENQUERY(BASEDEPILOTAGE,'SELECT [NOM SERVICE] as MASTERID FROM SuiviQuot_PROD_etat;') BP 
    JOIN
		(((OPENQUERY(ORACLE, 'SELECT * FROM ORACLE.DEMANDES') DI1 
			JOIN
			OPENQUERY(ORACLE, 'SELECT * FROM ORACLE.DEMANDES') DI2
			ON
            DI1.DEM_ID = DI2.DEM_ID)
			JOIN
				OPENQUERY(ORACLE, 'SELECT * FROM ORACLE.DEMANDES') DI3
				ON
				DI1.DEM_ID = DI3.DEM_ID)
				JOIN
					OPENQUERY(ORACLE, 'SELECT * FROM ORACLE.DEMANDES') DI4
					ON DI1.DEM_ID = DI4.DEM_ID)
	ON BP.MASTERID = DI4.DI_VALUE)
WHERE 
(
        DI1.DI_PARAM = '/contrat/client' AND
        DI1.DI_VALUE LIKE 'XXX%' AND
        DI2.DI_PARAM = '/ligne/stat' AND
        DI2.DI_VALUE = 'A' AND
        DI3.DI_PARAM = '/idGEN' AND
        DI3.DI_VALUE LIKE 'L%' AND
        DI4.DI_PARAM = '/contrat/id_administratif');
J'essaye de modifier la requête et vous tiens au courant !
cgair est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h02.


 
 
 
 
Partenaires

Hébergement Web