problème avec select imbriqué (sur AS400)

Invité
Invité n'ayant pas de compte PHPfrance

22 févr. 2006, 19:27

Bonjour,
Le SQL (simplifié) ci-dessous ne génére rien à cause du SELECT imbriqué:

C+ SELECT ( '2000' CONCAT ';' CONCAT
C+ Char(
C+ (Select VALEURNUM from PFTABLE where
C+ RECTYPE = '20000' and CHAMP = 'ZZ025'
C+ and CUSTID = obj.code))
C+ ) as ENREG
C+ FROM PFNOBJ obj,

Si tout les obj.code sont trouvé dans le fichier PFTABLE, le SQL fonctionne bien.
Mais des qu'un obj.code n'est pas trouvé dans PFTABLE le SQL ne génére rien (le fichier en sortie est vide)
je voudrai que, même si il ne trouve pas l'equivalence dans PFTABLE, qu'il me crée les enregistrement et avec la zone concerné vide.
merci pour votre aide.
marchepied

Invité
Invité n'ayant pas de compte PHPfrance

22 mars 2006, 12:49

our résoudre votre problème , il vaudrait mieux ecrire la requête comme suit :

C+ SELECT ( '2000' CONCAT ';' CONCAT
C+ Char(
C+ (Select IFNULL(VALEURNUM, '') from PFTABLE where
C+ RECTYPE = '20000' and CHAMP = 'ZZ025'
C+ and CUSTID = obj.code))
C+ ) as ENREG
C+ FROM PFNOBJ obj,

ou l'écrire pour plus de lisibilité comme

C+ SELECT ( '2000' CONCAT ';' CONCAT
C+ Char(IFNULL(VALEURNUM, '') ) as ENREG
C+ FROM PFNOBJ obj
C+ Left join from PFTABLE on RECTYPE = '20000' and CHAMP = 'ZZ025'
C+ and CUSTID = obj.code