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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
|
INSERT INTO ASS_ORGANE_FAMILLE (
SELECT DISTINCT nro_suivi, idt_famille, NULL, NULL, 3, pcontexte -- determine entre la tabke des elements valide et celle des ¿alider si le nombre est le m¿ pour le m¿ VI et le m¿ bloc
FROM (SELECT nro_suivi, idt_bloc, COUNT (idt_critere) AS nbvalvalid -- liste les blocs valides pour un VI et pour ses selections
FROM ((SELECT DISTINCT &pelement AS nro_suivi, c.idt_bloc, c.idt_critere -- evaluation des critres autre que macro pour des valeurs '!='
FROM famille f,
bloc b,
critere c,
ass_organe_famille aof
WHERE f.contexte = pcontexte
AND aof.num_suivi = &pelement
AND aof.niveau = 2
AND f.idt_pere = aof.idt_famille
AND c.type_crit <> 'MACRO'
AND f.idt_famille = b.idt_famille
AND b.idt_bloc = c.idt_bloc
AND c.operateur = '!='
MINUS SELECT DISTINCT aif.nro_suivi, c.idt_bloc, c.idt_critere
-- evaluation des critres autre que macro pour des valeurs '!='
FROM famille f,
bloc b,
critere c,
ai_ne.ai_fab aif,
ass_organe_famille aof
WHERE f.contexte = pcontexte
AND aof.num_suivi = &pelement
AND aof.niveau = 2
AND f.idt_pere = aof.idt_famille
AND c.type_crit <> 'MACRO'
AND f.idt_famille = b.idt_famille
AND b.idt_bloc = c.idt_bloc
AND c.operateur = '!='
AND aif.contexte = pcontexte
AND aif.nro_suivi = &pelement
AND aif.type_info = c.type_crit
AND aif.valeur_info LIKE c.valeur)
UNION SELECT DISTINCT aif.nro_suivi, c.idt_bloc,
c.idt_critere
-- evaluation des critres autre que macro pour des valeurs '='
FROM famille f,
bloc b,
critere c,
ai_ne.ai_fab aif,
ass_organe_famille aof
WHERE f.contexte = pcontexte
AND aof.num_suivi = &pelement
AND aof.niveau = 2
AND f.idt_pere = aof.idt_famille
AND c.type_crit <> 'MACRO'
AND f.idt_famille = b.idt_famille
AND b.idt_bloc = c.idt_bloc
AND c.operateur = '='
AND aif.contexte = pcontexte
AND aif.nro_suivi = &pelement
AND aif.type_info = c.type_crit
AND aif.valeur_info LIKE c.valeur
UNION SELECT DISTINCT aif.nro_suivi, c.idt_bloc,
c.idt_critere
-- evaluation des critres autre que macro pour des valeurs intervales
FROM famille f,
bloc b,
critere c,
ai_ne.ai_fab aif,
ass_organe_famille aof
WHERE f.contexte = pcontexte
AND aof.num_suivi = &pelement
AND aof.niveau = 2
AND f.idt_pere = aof.idt_famille
AND c.type_crit <> 'MACRO'
AND f.idt_famille = b.idt_famille
AND b.idt_bloc = c.idt_bloc
AND c.operateur = '<<'
AND aif.contexte = pcontexte
AND aif.nro_suivi = &pelement
AND aif.type_info = c.type_crit
AND aif.valeur_info >= c.valeur
AND aif.valeur_info <= c.valeur2
UNION SELECT DISTINCT avm.num_suivi, c.idt_bloc,
c.idt_critere
-- evaluation des critres macro pour des valeurs '='
FROM famille f,
bloc b,
critere c,
ass_vi_macro avm,
ass_organe_famille aof
WHERE f.contexte = pcontexte
AND aof.num_suivi = &pelement
AND aof.niveau = 2
AND f.idt_pere = aof.idt_famille
AND c.type_crit = 'MACRO'
AND f.idt_famille = b.idt_famille
AND b.idt_bloc = c.idt_bloc
AND c.operateur = '='
AND avm.num_suivi = &pelement
AND avm.selection = c.valeur
AND avm.contexte = pcontexte
UNION (SELECT DISTINCT &pelement AS num_suivi, c.idt_bloc,
c.idt_critere
-- evaluation des critres macro pour des valeurs '!='
FROM famille f,
bloc b,
critere c,
ass_organe_famille aof
WHERE f.contexte = pcontexte
AND aof.num_suivi = &pelement
AND aof.niveau = 2
AND f.idt_pere = aof.idt_famille
AND c.type_crit = 'MACRO'
AND f.idt_famille = b.idt_famille
AND b.idt_bloc = c.idt_bloc
AND c.operateur = '!='
MINUS SELECT DISTINCT avm.num_suivi, c.idt_bloc,
c.idt_critere
FROM famille f,
bloc b,
critere c,
ass_vi_macro avm
WHERE c.type_crit = 'MACRO'
AND f.idt_famille = b.idt_famille
AND b.idt_bloc = c.idt_bloc
AND c.operateur = '!='
AND avm.num_suivi = &pelement
AND avm.selection = c.valeur
AND avm.contexte = pcontexte))
GROUP BY nro_suivi, idt_bloc) datavalid,
(SELECT idt_famille, idt_bloc, COUNT (idt_critere) AS nbvalavalider
-- liste les blocs ¿alider pour un VI et pour ses selections
FROM (SELECT DISTINCT f.idt_famille, c.idt_bloc,
c.idt_critere
FROM famille f,
bloc b,
critere c,
ass_organe_famille aof
WHERE f.contexte = pcontexte
AND aof.num_suivi = &pelement
AND aof.niveau = 2
AND f.idt_pere = aof.idt_famille
AND f.idt_famille = b.idt_famille
AND b.idt_bloc = c.idt_bloc)
GROUP BY idt_famille, idt_bloc) dataavalider
WHERE dataavalider.idt_bloc = datavalid.idt_bloc
AND dataavalider.nbvalavalider = datavalid.nbvalvalid
); |
Partager