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 enregistrements et avec la zone concerné vide.
merci pour votre aide.
marchepied
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
SQLpro [MVP]
marchepied a écrit :
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 enregistrements et avec la zone concerné vide. merci pour votre aide. marchepied
Essayez de faire une UNION avec une ligne fantôme qui n'apparaitra qu'en cas d'inexistance de tuple dans la sous requête. Utilisez le EXISTS et prenez une ligne d'une table dont vous avez l'assurance qu'elle existe toujours...
SELECT ( '2000' CONCAT ';' CONCAT Char( (Select VALEURNUM from PFTABLE where RECTYPE = '20000' and CHAMP = 'ZZ025' and CUSTID = obj.code UNION SELECT '' FROM ... WHERE ... AND NOT EXISTS(Select VALEURNUM from PFTABLE where RECTYPE = '20000' and CHAMP = 'ZZ025' and CUSTID = obj.code)))) as ENREG FROM PFNOBJ obj,
A +
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
marchepied a écrit :
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 enregistrements et avec la zone concerné vide.
merci pour votre aide.
marchepied
Essayez de faire une UNION avec une ligne fantôme qui n'apparaitra qu'en
cas d'inexistance de tuple dans la sous requête.
Utilisez le EXISTS et prenez une ligne d'une table dont vous avez
l'assurance qu'elle existe toujours...
SELECT ( '2000' CONCAT ';' CONCAT
Char( (Select VALEURNUM
from PFTABLE
where RECTYPE = '20000'
and CHAMP = 'ZZ025'
and CUSTID = obj.code
UNION
SELECT ''
FROM ...
WHERE ...
AND NOT EXISTS(Select VALEURNUM
from PFTABLE
where RECTYPE = '20000'
and CHAMP = 'ZZ025'
and CUSTID = obj.code)))) as ENREG
FROM PFNOBJ obj,
A +
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
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 enregistrements et avec la zone concerné vide. merci pour votre aide. marchepied
Essayez de faire une UNION avec une ligne fantôme qui n'apparaitra qu'en cas d'inexistance de tuple dans la sous requête. Utilisez le EXISTS et prenez une ligne d'une table dont vous avez l'assurance qu'elle existe toujours...
SELECT ( '2000' CONCAT ';' CONCAT Char( (Select VALEURNUM from PFTABLE where RECTYPE = '20000' and CHAMP = 'ZZ025' and CUSTID = obj.code UNION SELECT '' FROM ... WHERE ... AND NOT EXISTS(Select VALEURNUM from PFTABLE where RECTYPE = '20000' and CHAMP = 'ZZ025' and CUSTID = obj.code)))) as ENREG FROM PFNOBJ obj,
A +
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************