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.:D
Voici un exemple de type de proc coté Sybase:
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
|
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:
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