Aide requete sql

Bonjour,
j'ai le modèle relationnel suivant :

CLIENTS [ClNum, ClNom, ClSecu, ClTel, ClAdresse]
COMPTES [CoId, CoNum, CoSolde, CoType, CoDateOuv, ANum_ouverture*]
TRANSACTIONS [TNum, TType, TMontant, TDate, TDateValeur, CoId*, ClNum*]
PROPRIETAIRE [ClNum*, CoId*]
AGENCES [ANum, AAdresse, ATel]
HEBERGER [CoId*, ANum*, DateDebH]
OUVERTURES [ANum*, JId*, HeureOuv, HeureFerm]
JOURS [JId, JNom]
EMPLOYES [ENum, ENom, EAdresse, ESalaire, EDateNais, EPhoto, ENum_superieur*]
AFFECTER [ENum*, ANum*, DateDeb, DateFin]

et je voudrais réaliser la requete suivante :

Quel est le nom et l’adresse des clients qui possèdent un compte ouvert à Rennes, ou qui
possèdent un compte joint avec quelqu’un qui possède un compte ouvert à Rennes ?

sachant que l'agence de rennes a pour numéro d'agence 22222

je reste complètement bloqué. pourriez vous m'aider svp ?
Configuration: Windows Vista Internet Explorer 7.0

13 réponses

Résumé de la discussion

La demande cherche le nom et l’adresse des clients possédant un compte ouvert à Rennes, ou d’un compte joint avec une personne ayant un compte ouvert à Rennes, l’agence étant la 22222. Plusieurs solutions existent, mais la réponse retenue présente deux requêtes SQL, jointes entre AGENCES, COMPTES, CLIENTS et TRANSACTIONS, afin d’isoler les comptes ouverts à Rennes. La première requête nommée Requête1 sélectionne les noms et adresses par jointures et regroupe selon CoNum afin d’identifier les clients liés à des comptes ouverts dans l’agence 22222. Elle permet d’éviter les doublons et peut s’appuyer sur une étape de regroupement par CoNum pour restituer des résultats, garantissant que chaque client n’apparaît qu’une fois, même en présence de comptes multiples.

Bobot (l’IA à votre service)
  1. Quel sont t champs egaux
    1. mes champs égaux ? qu'entends tu par "champs égaux" ?
  2. bah ds t differente table quel sont t champs egaux ex:
    table client ; le champ nom
    =
    table banque ;le champ nomclients
    1. mes champs égaux sont faciles à retrouver puisque quelque soit la table, ils portent le même nom. juste une exception dans la table compte, le champ ANumOuverture est agle au champ ANum de la table agence. à part ça les champs égaux d'une table à l'autre portent exactement le même nom
  3. tu peux sur :
    www.cijoint.fr
    1. non je ne peux pas car c'est une base de donnée .mdb qui n'est pas pris en charge par le site. par contre si cela peut t'aider, essaie de passer par l'algèbre relationnelle pour m'aider...
  4. tro compliquer il faut relier plusieurs base!!!

    ce n'est pas ecris mais tu peux mettre des mdb qd meme
    1. non je ne peux pas je viens d'essayer ça n'a pas marché. dis moi ce qu'il te faut comme renseignements i le modèle relationnel ne suffit pas
  5. dsl il faut faire un petit zip avant de le metttre

    sinon:
    selectionne :

    CLIENTS [ClNum, ClNom, ClSecu, ClTel, ClAdresse]
    COMPTES [CoId, CoNum, CoSolde, CoType, CoDateOuv, ANum_ouverture*]
    TRANSACTIONS [TNum, TType, TMontant, TDate, TDateValeur, CoId*, ClNum*]
    AGENCES [ANum, AAdresse, ATel]
    fais t relations puis
    selectionne les champ:
    ClNom,ClAdresse,ANum

    pour ANum critere = 22222

    sachant que l'agence de rennes a pour numéro d'agence 22222
    1. wi ça dacor mé c justement les relations qui me posent pb...
      enfin je pense pas ke l'on puisse faire la requete comme ça a vue d'oeil, il faut s'y pencher plus
  6. bah si tu faisais un .zip je pourrai m'y pencher
    1. je fé le zip alor
    2. @florianhttp://www.cijoint.fr/cjlink.php?file=cj200912/cijb9FNBrU.zip
  7. tiens creer une requete ne choisi aucune table et clique sur sql en haut a gauche et copie ca :
    SELECT CLIENTS.ClNom, CLIENTS.ClAdresse
    FROM AGENCES INNER JOIN (COMPTES INNER JOIN (CLIENTS INNER JOIN TRANSACTIONS ON CLIENTS.ClNum = TRANSACTIONS.ClNum) ON COMPTES.CoId = TRANSACTIONS.CoId) ON AGENCES.ANum = COMPTES.ANum_Ouverture
    GROUP BY CLIENTS.ClNom, CLIENTS.ClAdresse, AGENCES.ANum
    HAVING (((AGENCES.ANum)="22222"));

    execute et dis moi si c ca ?
    1. non. le résultat n'est pas le bon...
      après je peux pas t'aider car "INNER JOIN" je ne sais pas du tout à quoi ça correspond
  8. c koi le resultat voulu?
    1. les deux clients enregistés doivent apparaitre c a d guirec jean loup et guirec suzette
      cependant moi j'ai une requete qui affiche les deux nom mais elle n'est pas bonne. comme il y a très peu d'enregistrements un bon résultat n'est pas forcément synonyme de bonne requete.
  9. SELECT CLIENTS.ClNom, CLIENTS.ClAdresse, COMPTES.CoNum, AGENCES.ANum
    FROM AGENCES INNER JOIN (COMPTES INNER JOIN (CLIENTS INNER JOIN TRANSACTIONS ON CLIENTS.ClNum = TRANSACTIONS.ClNum) ON COMPTES.CoId = TRANSACTIONS.CoId) ON AGENCES.ANum = COMPTES.ANum_Ouverture
    GROUP BY CLIENTS.ClNom, CLIENTS.ClAdresse, COMPTES.CoNum, AGENCES.ANum;
    1. c bon g trouvé il te faut 2 requetes:

      1ere requete nommé : requête1

      SELECT CLIENTS.ClNom, CLIENTS.ClAdresse
      FROM AGENCES INNER JOIN (COMPTES INNER JOIN (CLIENTS INNER JOIN TRANSACTIONS ON CLIENTS.ClNum = TRANSACTIONS.ClNum) ON COMPTES.CoId = TRANSACTIONS.CoId) ON AGENCES.ANum = COMPTES.ANum_Ouverture
      GROUP BY CLIENTS.ClNom, CLIENTS.ClAdresse, COMPTES.CoNum
      ORDER BY COMPTES.CoNum;

      puis une 2eme basé sur cette 1ere

      SELECT Requête1.ClNom, Requête1.ClAdresse
      FROM Requête1
      GROUP BY Requête1.ClNom, Requête1.ClAdresse;