SQL comment écrire cette requête

jmey Messages postés 5 Date d'inscription mardi 25 janvier 2005 Statut Membre Dernière intervention 31 mai 2005 - 20 mai 2005 à 11:13
jmey Messages postés 5 Date d'inscription mardi 25 janvier 2005 Statut Membre Dernière intervention 31 mai 2005 - 23 mai 2005 à 10:45
Je cherche une fonction SQL.





Voici le problème :





J’ai un fichier CLIENT et un fichier ADRESSE. Les clients ont obligatoirement une adresse légale NUMADR <gras>01 et peuvent avoir une adresse de correspondance NUMADR</gras> 02, donc un second record dans ADRESSE.





Pour effectuer un mailing, je souhaite adresser la correspondance à l’adresse 02 si elle existe, sinon à l’adresse 01 si le CLIENT ne possède qu’une seule adresse (01). Je ne veux bien sûr qu’un seul envoi par client et donc récupérer l'enregistrement de la la bonne adresse.





Le numéro de client NUMCLI se trouve évidemment dans chacun des deux fichiers.





Comment formuler la fonction SQL ?

JMR

2 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
20 mai 2005 à 20:08
salut

pour faire cela
utilise une syntaxe du genre

IIf(IsNull([adresse_1].[adresse]),[adresse_2].[adresse],[adresse_1].[adresse]) AS Adresse

Avec deux tables adresses en left join sur la table client

from client
left join adresse ON client.adresse1= adresse.id
left join adresse as adresse2 ON client.adresse2 = adresse2.id

voila
0
jmey Messages postés 5 Date d'inscription mardi 25 janvier 2005 Statut Membre Dernière intervention 31 mai 2005
23 mai 2005 à 10:45
Ok pour la première partie. J'obtiens les records :

no client avec champs CLIENT, ADRESSE1, ADRESSE2 (adresse2 à blanc si aucune adresse)

Par contre, comment introduire cette partie pour n'avoir qu'une adresse?

IIf(IsNull([adresse_1].[adresse]),[adresse_2].[adresse],[adresse_1].[adresse]) AS Adresse

Voici ma requête den l'état actuel :
SELECT * FROM ambbfic.assurp A left outer join ambbfic.adresp R on (A.anoass R.bnoass and r.bnoadr '01' and r.bdafca = ' ')left outer join ambbfic.adresp S on (A.anoass S.bnoass and s.bnoadr '02' and s.bdafca = ' ')
where A.anoass between 150000 and 160000
order by a.anoass

Mes fichiers : assurp=clients, adresp=adresses

JMR
0
Rejoignez-nous