Forum iSeries, hébergé par xdocs400.com

As400, iSeries, i5, System i, une machine qui évolue pour être de plus en plus puissante.

Vous n'êtes pas identifié.

Annonce

ATTENTION : Certaines adresses email sont filtrées et peuvent détecter nos envois comme des spams : email entreprise, hotmail. Pensez a regarder du côté de vos anti spam aussi. D'après nos tests, notre système de mail fonctionne.

Liens

#1 2010-02-08 16:56:36

Khristian
Membre
Date d'inscription: 2007-02-12
Messages: 231

[Résolu] RUNSQLSTM INSERT not in

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)


Christian M.

Hors ligne

 

#2 2010-02-08 17:12:11

Philippe
Modérateur
Lieu: Région parisienne
Date d'inscription: 2007-01-24
Messages: 2260
Site web

Re: [Résolu] RUNSQLSTM INSERT not in

Code:

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

 

#3 2010-02-08 17:20:34

k2r400
Membre
Lieu: Montpellier (34)
Date d'inscription: 2007-05-07
Messages: 819
Site web

Re: [Résolu] RUNSQLSTM INSERT not in

Version avec jointure :

Code:

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 :

Code:

INSERT INTO DROITS                             
SELECT cle01, cle02, cle03, 'SECOFR', 'Y', 'N' 
FROM tarif where  (cle01, cle02, cle03)        
not in (select cle01, cle02, cle03 from droits)

Patrick

Hors ligne

 

#4 2010-02-09 08:42:49

Khristian
Membre
Date d'inscription: 2007-02-12
Messages: 231

Re: [Résolu] RUNSQLSTM INSERT not in

C'est parfait !

Merci...


Christian M.

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB
Traduction par FluxBB.fr