Ce forum est maintenant fermé, seule cette archive statique reste consultable.
  FORUM Rue-Montgallet.com
  Programmation
  Php - Sql

  SQL Comment écrire cette requête

Bas de page
Auteur Sujet :

SQL Comment écrire cette requête

n°13121
jmey
Profil : Jeune recrue
Posté le 18-05-2005 à 18:55:10  
 

Je cherche une fonction SQL spéciale.
 
Voici le problème :
 
J’ai un fichier CLIENT et un fichier ADRESSE. Les clients ont obligatoirement une adresse légale NUMADR = 01 et peuvent avoir une adresse de correspondance NUMADR = 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.
 
Le numéro de client NUMCLI se trouve évidemment dans chacun des deux fichiers.
 
Comment formuler la fonction SQL ?

mood
Pub
Posté le 18-05-2005 à 18:55:10  
 

n°13126
ollone
Part of the 'One brothers
Profil : Vieux de la vieille
Posté le 19-05-2005 à 10:08:38  
 

Code :
  1. select a.numcli, a.nom, a.prenom, b.* from client a, adresse b where a.numcli = b.numcli group by a.numcli


 
Ainsi tu récupères toutes les adresses de tous les clients possédant au moins une adresse.
Ensuite tu traites les identifiants les uns après les autres, et tu peux vérifier si une ou deux adresses sont définis par client, et agir en conséquence.
 
C'est une des méthodes, tu peux faire de "mille et une" façons...

n°13167
jmey
Profil : Jeune recrue
Posté le 20-05-2005 à 11:00:52  
 

Merci.
Mais tous les clients ont de toute manière l'adresse 01. Comment procéder pour le choix de l'adresse 02 si elle existe, sinon l'adresse 01 par défaut, donc éditer la bonne adresse de correspondance.
La formule que tu indiques ne permet pas de récupérer le bon enregistrement adresse.
As-tu une solution?
A+  

ollone a écrit :

Code :
  1. select a.numcli, a.nom, a.prenom, b.* from client a, adresse b where a.numcli = b.numcli group by a.numcli


 
Ainsi tu récupères toutes les adresses de tous les clients possédant au moins une adresse.
Ensuite tu traites les identifiants les uns après les autres, et tu peux vérifier si une ou deux adresses sont définis par client, et agir en conséquence.
 
C'est une des méthodes, tu peux faire de "mille et une" façons...


n°13170
ollone
Part of the 'One brothers
Profil : Vieux de la vieille
Posté le 20-05-2005 à 11:46:19  
 

Si j'ai bien compris, la requête que je t'ai indiquée doit te retourner au moins une adresse par identifiant client, et deux si une seconde adresse est définie.
Ensuite à toi de faire le tri, si tu ne trouves qu'une seule adresse la question ne se pose même pas, et si tu en récupères deux, à toi de faire le choix de celle à utiliser.
 
Si tel n'est pas le cas, j'ai du mal comprendre qqe chose; pour moi, un client peut avoir plusieurs enregistrements dans la table adresse, voilà ce que j'ai compris...
 
ps: le group by peut être argumenté avec plusieurs champs de table => exemple : [...] group by a.numcli, b.date;

  FORUM Rue-Montgallet.com
  Programmation
  Php - Sql

  SQL Comment écrire cette requête

© 2000-2024 Forum.rue-montgallet.com - Tous droits réservés