Bonjour,
Je possède une table POPULATION contenant ~3M enr. avec des informations diverses des individus de la population (tranches d'âge, habitude d'achats, etc.)
J'ai dans cette table un champ me permettant de cibler mes populations en fonction de certains critères. Je génère en fonction des besoins de l'utilisateur un critère d'UPDATE de ce champ via une requête du type
Je dois rajouter un critère de sélection spécifiant si l'individu a précédemment été contacté. Pour ce faire, je dois consulter les informations de tables CIBLE et ACTION spécifiant les périodes et actions de sollicitations menées auprès desdits individus.Code:
1
2
3 UPDATE POPULATION SET CODECIBLE = <VALEURCODE> WHERE SEGMENT1 = <VALEURSEGMENT1> AND SEGMENT2 = <VALEURSEGMENT2>...
ma table ACTION (~40K enr.) contient outre la PK (ID), des dates de ciblages (DD_DEB, DD_FIN) ;
ma table CIBLE (~36M enr.) contient outre la PK (ID), l'ID_ACTION et l'ID_INDIVIDU.
J'hésite entre deux syntaxe pour mon update :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 UPDATE POPULATION SET CODECIBLE = <VALEURCODE> WHERE EXISTS ( SELECT * FROM CIBLE INNER JOIN ACTION ON CIBLE.ID_ACTION = ACTION.ID WHERE DD_DEB BETWEEN '2010-01-01' AND DATEADD(mi, 1439, '2010-02-01') AND DD_FIN BETWEEN '2010-01-01' AND DATEADD(mi, 1439, '2010-02-01') AND POPULATION.ID_INDIVIDU = CIBLE.ID_INDIVIDU ) UPDATE POPULATION SET CODECIBLE = <VALEURCODE> WHERE 1 >= ( SELECT COUNT(*) FROM CIBLE INNER JOIN ACTION ON CIBLE.ID_ACTION = ACTION.ID WHERE DD_DEB BETWEEN '2010-01-01' AND DATEADD(mi, 1439, '2010-02-01') AND DD_FIN BETWEEN '2010-01-01' AND DATEADD(mi, 1439, '2010-02-01') AND POPULATION.ID_INDIVIDU = CIBLE.ID_INDIVIDU )