OVH Cloud OVH Cloud

Probl. de criteres d'extraction

1 réponse
Avatar
Kevin
Je dois extraire de ma base, toutes les donnees des abonnes en fonction de
ce qui est dans mon "select".
Par contre, il ne faut pas que j'ai ceux dont l'adresse n'est pas bonne
(retour des courriers par la Poste avec mention NPAI) :
Pour eux, 3 criteres sont donnes :
"M" pour ceux dont l'adresse est definitivement bloquee et a qui on envoie
plus rien
"1" pour ceux dont on a recu tres peu de courrier NPAI
"2" pour ceux dont les retours NPAI sont plus importants mais pas bloques

J'ai reussi a ecrire la requete suivante mais mes criteres de selection sur
"M", "1" et "2" ne marchent pas et je vois plus trop comment faire... Je
debute en SQL (j'ai repris la requete d'une deja faite). Si qqu'un peu me
corriger ma requete, ca serait cool et si on m'explique le principe en meme
temps, ce serait en mieux ;-)

D'avance, merci a tous !

SELECT DISTINCT
c.LIBELLE_CIVILITE,
p.NOM_ADHERENT nom,
nls_initcap(p.PRENOM_ADHERENT) prenom,
nvl(a.LIGNE_ADRESSE_1,' ') ligne_adresse_1,
nvl(a.LIGNE_ADRESSE_2,' ') ligne_adresse_2,
nvl(a.LIGNE_ADRESSE_3,' ') ligne_adresse_3,
nvl(a.LIGNE_ADRESSE_4,' ') ligne_adresse_4,
nvl(a.LIGNE_ADRESSE_5,' ') ligne_adresse_5,
HISTO_MATRICULE.NUMERO_MATRICULE matricule,
p.NUMERO_ADHERENT
FROM
POSITION,
SECTION,
ADHERENT p,
HISTO_MATRICULE,
CIVILITE c,
ADRESSE a,
FAMILLE f,
HISTO_FAMILLE,
BLOCAGE_ADRESSE
WHERE
( BLOCAGE_ADRESSE.CODE_BLOCAGE != 'M' OR BLOCAGE_ADRESSE.CODE_BLOCAGE !=
'1' OR BLOCAGE_ADRESSE.CODE_BLOCAGE != '2' )
AND ( HISTO_FAMILLE.NUMERO_BENEFICIAIRE=p.NUMERO_BENEFICIAIRE )
AND ( HISTO_MATRICULE.NUMERO_FAMILLE=f.NUMERO_FAMILLE )
AND ( c.CODE_CIVILITE=p.CODE_CIVILITE )
AND ( a.NUMERO_ADRESSE=p.NUMERO_ADRESSE_ADHERENT )
AND ( f.NUMERO_FAMILLE=HISTO_FAMILLE.NUMERO_FAMILLE )
AND ( p.DATE_NAISSANCE_ADHERENT > '31/12/1980' AND
p.DATE_NAISSANCE_BENEFICIAIRE < '01/01/1988' )
AND ( HISTO_MATRICULE.DATE_FIN_MATRICULE is null )
and (p.code_section = section.code_section)
and ( POSITION.CODE_POSITION = 'AD' OR POSITION.CODE_POSITION = 'AP' OR
POSITION.CODE_POSITION ='PM' )
ORDER BY
2,3;

1 réponse

Avatar
Med Bouchenafa
Ton code SQL à l'air de provenir d'une base ORACLE
Ce n'est pas forcément le meilleur forum pour avoir la meilleure réponse.
Avant de te conseiller de changer de SGBDR pour SQL Server, il faut regarder
à mettre une jointure entre la table BLOCAGE_ADRESSE et probablement la
table ADRESSE.

--
Bien cordialement
Med Bouchenafa



"Kevin" a écrit dans le message de news:
421a36f0$0$28430$
Je dois extraire de ma base, toutes les donnees des abonnes en fonction de
ce qui est dans mon "select".
Par contre, il ne faut pas que j'ai ceux dont l'adresse n'est pas bonne
(retour des courriers par la Poste avec mention NPAI) :
Pour eux, 3 criteres sont donnes :
"M" pour ceux dont l'adresse est definitivement bloquee et a qui on envoie
plus rien
"1" pour ceux dont on a recu tres peu de courrier NPAI
"2" pour ceux dont les retours NPAI sont plus importants mais pas bloques

J'ai reussi a ecrire la requete suivante mais mes criteres de selection
sur
"M", "1" et "2" ne marchent pas et je vois plus trop comment faire... Je
debute en SQL (j'ai repris la requete d'une deja faite). Si qqu'un peu me
corriger ma requete, ca serait cool et si on m'explique le principe en
meme
temps, ce serait en mieux ;-)

D'avance, merci a tous !

SELECT DISTINCT
c.LIBELLE_CIVILITE,
p.NOM_ADHERENT nom,
nls_initcap(p.PRENOM_ADHERENT) prenom,
nvl(a.LIGNE_ADRESSE_1,' ') ligne_adresse_1,
nvl(a.LIGNE_ADRESSE_2,' ') ligne_adresse_2,
nvl(a.LIGNE_ADRESSE_3,' ') ligne_adresse_3,
nvl(a.LIGNE_ADRESSE_4,' ') ligne_adresse_4,
nvl(a.LIGNE_ADRESSE_5,' ') ligne_adresse_5,
HISTO_MATRICULE.NUMERO_MATRICULE matricule,
p.NUMERO_ADHERENT
FROM
POSITION,
SECTION,
ADHERENT p,
HISTO_MATRICULE,
CIVILITE c,
ADRESSE a,
FAMILLE f,
HISTO_FAMILLE,
BLOCAGE_ADRESSE
WHERE
( BLOCAGE_ADRESSE.CODE_BLOCAGE != 'M' OR BLOCAGE_ADRESSE.CODE_BLOCAGE ! > '1' OR BLOCAGE_ADRESSE.CODE_BLOCAGE != '2' )
AND ( HISTO_FAMILLE.NUMERO_BENEFICIAIRE=p.NUMERO_BENEFICIAIRE )
AND ( HISTO_MATRICULE.NUMERO_FAMILLE=f.NUMERO_FAMILLE )
AND ( c.CODE_CIVILITE=p.CODE_CIVILITE )
AND ( a.NUMERO_ADRESSE=p.NUMERO_ADRESSE_ADHERENT )
AND ( f.NUMERO_FAMILLE=HISTO_FAMILLE.NUMERO_FAMILLE )
AND ( p.DATE_NAISSANCE_ADHERENT > '31/12/1980' AND
p.DATE_NAISSANCE_BENEFICIAIRE < '01/01/1988' )
AND ( HISTO_MATRICULE.DATE_FIN_MATRICULE is null )
and (p.code_section = section.code_section)
and ( POSITION.CODE_POSITION = 'AD' OR POSITION.CODE_POSITION = 'AP' OR
POSITION.CODE_POSITION ='PM' )
ORDER BY
2,3;