IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Réécriture de cette requête en CTE


Sujet :

Développement SQL Server

  1. #1
    Membre habitué Avatar de olivtone
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2010
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 242
    Points : 153
    Points
    153
    Par défaut Réécriture de cette requête en CTE
    Bonjour a Tous

    je voulais savoir si c'etait possible de reecrire cette requete en CTE? Merci a tous


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
     
    SELECT ODS.INC_ID_ADHESION as CON_IdContrat,
    	DCH.CNC_CD_USER as CON_CodeVendeur
    FROM adhimp.T_DECLARATION_CHALLENGE_DCH DCH
    JOIN (
    	SELECT INC.INC_ID_ADHESION, PRD.PRD_CD_PRODUIT, CNT.CNT_CD_CENTRE, CON.CON_NUMERO
    	FROM dbo.T_INFOS_CONTRAT_INC INC
    	JOIN dbo.T_CONTRAT_CON CON
    		ON CON.INC_ID_CONTRAT = INC.INC_ID_CONTRAT
    		AND CON.CON_NB_LIGNE = 1
    	JOIN dbo.T_PRODUIT_PRD PRD
    		ON CON.PRD_ID_PRODUIT = PRD.PRD_ID_PRODUIT 
    	JOIN TJ_CONTRAT_INDIVIDUS_CNI CNI
    		ON CNI.CON_ID_CONTRAT = CON.CON_ID_CONTRAT
    	JOIN TR_ROLE_INDIVIDU_RLI RLI
    		ON CNI.RLI_ID_ROLE_INDIVIDU = RLI.RLI_ID_ROLE_INDIVIDU
    		AND RLI.RLI_ID_SOURCE = 7
    	JOIN dbo.T_INDIVIDU_IND IND
    		ON CNI.IND_ID_INDIVIDU = IND.IND_ID_INDIVIDU
    	JOIN dbo.T_CENTRE_CNT CNT
    		ON IND.CNT_ID_CENTRE = CNT.CNT_ID_CENTRE	
    ) as ODS
    	ON DCH.CON_NUMERO = ODS.CON_NUMERO
    	AND DCH.PRD_CD_PRODUIT = ODS.PRD_CD_PRODUIT 
    	AND DCH.CNT_CD_CENTRE = ODS.CNT_CD_CENTRE
    WHERE DCH.TCT_CD_TYPE_CONTACT = 'V'

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Oui, c'est possible.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    C'est effectivement possible, mais il me semble que l'on n'a même pas besoin de CTE ...

    @++

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Je dirai même plus : on pourrait carrément se passer de la sous requête.

  5. #5
    Membre habitué Avatar de olivtone
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2010
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 242
    Points : 153
    Points
    153
    Par défaut
    et comment faites vous alors ?

    Je dois encore apprendre en TSQL d'ou ma question

    merci a vous

  6. #6
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    SELECT 
    			INC.INC_ID_ADHESION as CON_IdContrat,
    			DCH.CNC_CD_USER as CON_CodeVendeur
     
    FROM			adhimp.T_DECLARATION_CHALLENGE_DCH DCH
     
    INNER JOIN		T_CONTRAT_CON CON
    	ON			DCH.CON_NUMERO = CON.CON_NUMERO
     
    INNER JOIN		dbo.T_INFOS_CONTRAT_INC INC
    	ON			CON.INC_ID_CONTRAT = INC.INC_ID_CONTRAT
     
    INNER JOIN		dbo.T_PRODUIT_PRD PRD
    	ON			CON.PRD_ID_PRODUIT = PRD.PRD_ID_PRODUIT 
    	AND			DCH.PRD_CD_PRODUIT = PRD.PRD_CD_PRODUIT 
     
    INNER JOIN		TJ_CONTRAT_INDIVIDUS_CNI CNI
    	ON			CNI.CON_ID_CONTRAT = CON.CON_ID_CONTRAT
     
    INNER JOIN		TR_ROLE_INDIVIDU_RLI RLI
    	ON			CNI.RLI_ID_ROLE_INDIVIDU = RLI.RLI_ID_ROLE_INDIVIDU
     
    INNER JOIN		dbo.T_INDIVIDU_IND IND
    	ON			CNI.IND_ID_INDIVIDU = IND.IND_ID_INDIVIDU
     
    INNER JOIN		dbo.T_CENTRE_CNT CNT
    	ON			IND.CNT_ID_CENTRE = CNT.CNT_ID_CENTRE	
    	AND			DCH.CNT_CD_CENTRE = CNT.CNT_CD_CENTRE
     
    WHERE			DCH.TCT_CD_TYPE_CONTACT = 'V'
    	AND		CON.CON_NB_LIGNE = 1
    	AND		RLI.RLI_ID_SOURCE = 7

  7. #7
    Membre habitué Avatar de olivtone
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2010
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 242
    Points : 153
    Points
    153
    Par défaut
    j'ai pas le meme nombre de lignes 3053 au lieu de 118 000

  8. #8
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    J'ai omis le nom de schéma 'dbo' pour la table T_CONTRAT_CON.

    auriez vous une autre table du même nom dans un autre schéma ?

    Comme ça... je ne vois rien d'autre qui pourrait expliquer cette différence.

  9. #9
    Membre habitué Avatar de olivtone
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2010
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 242
    Points : 153
    Points
    153
    Par défaut
    il y a juste la table adhimp.T_DECLARATION_CHALLENGE_DCH et c'est tout

Discussions similaires

  1. es ce que cette requête est possible
    Par stan21 dans le forum Access
    Réponses: 2
    Dernier message: 01/02/2006, 10h22
  2. Cette requête est-elle valide?
    Par FrankOVD dans le forum Requêtes
    Réponses: 4
    Dernier message: 13/01/2006, 19h21
  3. Pourquoi cette requête est lente ?
    Par zenzo dans le forum Langage SQL
    Réponses: 7
    Dernier message: 06/01/2006, 15h15
  4. Que fait cette requête?
    Par noinneh dans le forum Langage SQL
    Réponses: 8
    Dernier message: 12/10/2005, 19h38
  5. expliqué cette requête
    Par ismailsalam dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 29/09/2005, 14h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo