Bonjour,

Désolé pour mon intitulé pas clair, je n'ai pas trouvé les mots pour résumer.

A un moment donné dans mon application je lance une procédure stockée pour activer des catégories suivant un état d'une table liée.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
update Categories 
set IsDisplay = 1
where Id IN (
    select distinct c.Id from Categories c
    inner join Supplier_Category as sc
    on sc.CategoryId = c.Id    
    inner join suppliers as s
    on s.Id = sc.SupplierId
    where c.Id = @CountryId
    and s.IsActive = 1
    and s.State = 'Success'
)
Voici la procédure en question

J'ai deux questions :
- Comment améliorer les performances de cette procédure qui prend du temps (Les inner join c'est méchant mais je n'ai pas d'autres solutions étant donné mon niveau en SQL...)
- Comme le montre cette procédure j'active les catégories dont le fournisseur associé est actif également.
Comment puis-je activer aussi les catégories parents ?

En effet une catégorie peut descendre d'une arborescence de catégories définit grâce à la colonne Tree dans la table Categories.
Une valeur de cette colonne pourrait être '1.2', dans ce cas-là, la catégorie avec ce champ a pour parent la catégorie avec l'id 2 qui elle-même a pour parent la catégorie avec l'id 1. Ma catégorie actuelle est donc au niveau 3.

En conclusion j'arrive donc à activer ma catégorie de niveau 3 mais il faudrait activer les catégories parents associées à savoir celles avec les id 1 et 2.

Merci par avance !