As400, iSeries, i5, System i, une machine qui évolue pour être de plus en plus puissante.
Vous n'êtes pas identifié.
Bonjour à tous...
Je suis à nouveau dans mon script RUNSQLSTM...
(OS V5R1M0)
Fichiers MABIB/TARIF (3 clefs)
CLE01
CLE02
CLE03
VAL01
VAL02
Fichiers MABIB/DROITS (4 clefs)
CLE01
CLE02
CLE03
CLE04
AUT01
AUT02
Cette fois-ci je souhaite ajouter (dans MABIB/DROITS)
pour 2 à 3 profils ( zone CLE04 = SECOFR par exemple)
dont les enregistrements existent dans MABIB/TARIF et pas dans DROITS avec comme valeur 'Y' à AUT01 et 'N' à AUT02
Les descriptions des identifiant CLE01, CLE02 et CLE03 sont identiques.
J'essaye de faire un INSERT... not in (select TARIF.CLE01 TARIF.CLE02 TARIF.CLE03...)
Et indiquer CLE04 = 'SECOFR'
et forcer AUT01 = 'Y' et AUT02 'N'
Je pense que cela doit être simple pour les adeptes d'SQL...
Merci de votre aide et participation
Dernière modification par Khristian (2010-02-09 08:43:09)
Hors ligne
INSERT INTO DROITS ( SELECT a.CLE01, a.CLE02, a.CLE03, CLE04, 'SECOFR', AUT01 = 'Y', AUT02 'N' FROM TARIFS a EXCEPTION JOIN DROITS b ON a.CLE01 = b.CLE01 AND a.CLE02 = b.CLE02 AND a.CLE03 = b.CLE03 )
ça devrait faire l'affaire.
Hors ligne
Version avec jointure :
INSERT INTO DROITS SELECT a.cle01, a.cle02, a.cle03, 'SECOFR', 'Y', 'N' FROM tarif a left exception join droits b on a.cle01 = b.cle01 and a.cle02 = b.cle02 and a.cle03 = b.cle03
Version avec NOT IN :
INSERT INTO DROITS SELECT cle01, cle02, cle03, 'SECOFR', 'Y', 'N' FROM tarif where (cle01, cle02, cle03) not in (select cle01, cle02, cle03 from droits)
Hors ligne
C'est parfait !
Merci...
Hors ligne