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. 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;
    1. 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 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.
      2. 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
      3. 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
      4. 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
      5. 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
      6. 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...
      7. 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
      8. Quel sont t champs egaux
        1. mes champs égaux ? qu'entends tu par "champs égaux" ?