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

MS SQL Server Discussion :

JOINTURES EXTERNES - Migration Sybase -> SQL Server


Sujet :

MS SQL Server

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2002
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 15
    Points : 14
    Points
    14
    Par défaut JOINTURES EXTERNES - Migration Sybase -> SQL Server
    Bonjour,

    Je suis en train de migrer des procs stockées d'une BDD Sybase vers une BDD SQL Server et je suis tombé sur un cas qui me laisse perplexe. J'ai tenté quelquechose mais je ne suis pas sur du résultat et je ne peux pas tester car je n'ai pas encore l'accès à la BDD. Je compte donc sur votre expérience.

    Voici un exemple de type de proc coté Sybase:

    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
     
    SELECT transfer.cd_acv,   
             ...  
             transfer.dt_pse_ctn_mbl,   
             zonstk_a.cd_hal,   
             zonstk_a.cd_zon_lgs,   
             transfer.dt_pos_ctn_mbl,   
             zonstk_b.cd_hal,   
             zonstk_b.cd_zon_lgs,   
             transfer.no_tft,
             transfer.cd_ori_ctn_mbl, 
             locctn_a.cd_zon_stk,
             locctn_a.no_emp_zon_stk,
             locctn_b.cd_zon_stk,
             locctn_b.no_emp_zon_stk
     
    FROM locctn locctn_a,   
             transfer,   
             zonstk zonstk_a,   
             locctn locctn_b,   
             zonstk zonstk_b  
    WHERE ( transfer.cd_ctn_mbl *= locctn_a.cd_ctn_mbl ) 
       and   ( transfer.cd_ori_ctn_mbl *= locctn_a.cd_ori_ctn_mbl )  
       and   ( transfer.no_loc_ctn_pse *= locctn_a.no_loc_ctn )   
       and   ( locctn_a.cd_zon_stk *= zonstk_a.cd_zon_stk )  
       and   ( transfer.cd_ctn_mbl *= locctn_b.cd_ctn_mbl )  
       and   ( transfer.cd_ori_ctn_mbl *= locctn_b.cd_ori_ctn_mbl )  
       and   ( transfer.no_loc_ctn_pos *= locctn_b.no_loc_ctn )  
       and   ( locctn_b.cd_zon_stk *= zonstk_b.cd_zon_stk ) 
       and   ( transfer.cd_ctn_mbl like @cd_ctn_mbl or (transfer.cd_ctn_mbl = null and @cd_ctn_mbl = '%'))
    ...

    J'ai migré de cette façon:

    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
     
    SELECT transfer.cd_acv,   
             ...
             transfer.dt_pse_ctn_mbl,   
             zonstk_a.cd_hal,   
             zonstk_a.cd_zon_lgs,   
             transfer.dt_pos_ctn_mbl,   
             zonstk_b.cd_hal,   
             zonstk_b.cd_zon_lgs,   
             transfer.no_tft,
             transfer.cd_ori_ctn_mbl, 
    -- MODIFS
             locctn_a2.cd_zon_stk,
             locctn_a2.no_emp_zon_stk,
             locctn_b2.cd_zon_stk,
             locctn_b2.no_emp_zon_stk
     
    FROM      transfer LEFT JOIN locctn locctn_a ON transfer.cd_ctn_mbl = locctn_a.cd_ctn_mbl
    				         AND transfer.cd_ori_ctn_mbl = locctn_a.cd_ori_ctn_mbl
    				         AND transfer.no_loc_ctn_pse = locctn_a.no_loc_ctn
    		LEFT JOIN locctn locctn_b ON transfer.cd_ctn_mbl = locctn_b.cd_ctn_mbl
    					AND transfer.cd_ori_ctn_mbl = locctn_b.cd_ori_ctn_mbl
    					AND transfer.no_loc_ctn_pos = locctn_b.no_loc_ctn,   
             locctn locctn_a2 LEFT JOIN zonstk zonstk_a ON occtn_a2.cd_zon_stk = zonstk_a.cd_zon_stk,
    	locctn locctn_b2 LEFT JOIN zonstk zonstk_b ON tn_b2.cd_zon_stk = zonstk_b.cd_zon_stk
     
    WHERE   ( transfer.cd_ctn_mbl like @cd_ctn_mbl or (transfer.cd_ctn_mbl = null and @cd_ctn_mbl = '%'))
    ...
    Pensez-vous que le résultat sera le même ?

    Merci d'avance pour vos réponses.

    Vincent

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 434
    Points : 502
    Points
    502
    Par défaut
    Pas mal..

    1- A la place de =null, mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    transfer.cd_ctn_mbl IS null
    2- sur LEFT JOIN, il te reste encore des virgules
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    AND transfer.no_loc_ctn_pos = locctn_b.no_loc_ctn,    
             locctn locctn_a2 LEFT JOIN zonstk zonstk_a ON occtn_a2.cd_zon_stk = zonstk_a.cd_zon_stk,
    	locctn locctn_b2 LEFT JOIN zonstk zonstk_b ON tn_b2.cd_zon_stk = zonstk_b.cd_zon_stk
    A mon avis faut revoir les deux jointures avec la table zonstk

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2002
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 15
    Points : 14
    Points
    14
    Par défaut
    Merci pour tes conseils

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Migration de ASA Sybase à MS SQL Server
    Par mazquindz dans le forum Développement
    Réponses: 1
    Dernier message: 15/06/2009, 19h23
  2. Migration Sybase Anywhere -> SQL Server 2005 Express
    Par bubi dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 31/10/2005, 15h23
  3. Migration de données SQL Server to Access2000
    Par guams dans le forum Migration
    Réponses: 8
    Dernier message: 02/07/2004, 14h23
  4. Migration HyperFile vers SQL SERVER
    Par mathll65 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 23/03/2004, 09h57
  5. Migration Oracle8i --> MS-SQL Server
    Par Aquarius dans le forum Migration
    Réponses: 11
    Dernier message: 24/12/2003, 14h03

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