à l'aide si vous plait

w tamdy ayam Messages postés 30 Statut Membre -  
oliver3923 Messages postés 1059 Statut Membre -
Bonjour,
je voudrai fair une relation entre client et agence d'ou jai la dans la table de client : id_client,id_agence,nom_clien, prenom_client et agence: id_agence , nom_agence jai met sa mais ca marche pas ask vous pouvais m'aide

select client.id_client ,nom_client,client.Login, prenom_client ,adresse_client, solde ,n_compte,type_agence from solde,client ,administrateur ,compte,agence where solde.id_client= client.id_client and administrateur.Login = client.Login and client.id_client=compte.id_client and client.id_agence=agence.id_agence and client.Login ='Mohamed '
merci de votre attention

2 réponses

  1. oliver3923 Messages postés 1059 Statut Membre 143
     
    bonjour

    select client.id_client ,nom_client,client.Login, prenom_client ,adresse_client, solde ,n_compte,type_agence

    tu sélectionne certains attributs (client.Login par exemple) que tu ne cite pas avant dans la liste de tes attributs et tables
    as tu oublié de les mettre plus haut ou ils n'existent pas?

    solde.id_client= client.id_client

    ici tu essaies d'accéder a un attributs d'une table solde donc a nouveau est ce qu'elle existe?

    sans oublié que tu n'as pas fait de jointure entre tes tables
    autre chose tu as tout a fait le droit de faire ta requête sur 10 lignes donc autant en profiter c'est plus lisible
    pareil je te conseille de mettre les mot clé en majuscule (par contre je sais pas si c'est accepté par tout les SGBD)

    SELECT client.id_client ,nom_client,client.Login, prenom_client ,adresse_client, solde ,n_compte,type_agence
    FROM solde,client ,administrateur ,compte,agence
    WHERE solde.id_client= client.id_client
    AND administrateur.Login = client.Login
    AND client.id_client=compte.id_client
    AND client.id_agence=agence.id_agence
    AND client.Login ='Mohamed '

    ps : je n'ai rien touché a la requête a part la remettre en forme pour qu'elle soit plus lisible

    par contre je ne vois pas bien le but de ta requête et il y a surement des lignes inutiles la dedans

    peux tu nous donner la liste des tables et surtout expliquer a quoi doit te servir ta requête?
    0
  2. w tamdy ayam Messages postés 30 Statut Membre
     
    salut ,
    les table sont :

    CREATE TABLE IF NOT EXISTS 'administrateur' (
    'Login' varchar(10) NOT NULL,
    'mot_passe' varchar(10) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

    banque : 'nom_banque'et 'id_banque'

    agence :

    'nom_agence'
    'type_agence'
    'id_agence'
    'adresse postale_agence'
    'id_banque'
    PRIMARY KEY ('id_agence','id_banque')

    compte
    'n_compte'
    'date_ouverture_compte'
    'id_client'
    PRIMARY KEY ('n_compte','id_client')
    client
    'id_client'
    'nom_client'
    'prenom_client'
    'adresse_client'
    'TEL'
    'id_agence'
    'Login'
    PRIMARY KEY ('id_client','id_agence')

    - je veux affiche un solde de client ;) bon jla affiche en fonction de nom et preno de client et son adresse plus le solde mais je veux faire une relation avec agence et son iD
    mais ca marche pas avec la requet k jai , maffiche pas des erreur mais ca me donne pas le resultat k je veux !!
    0
    1. oliver3923 Messages postés 1059 Statut Membre 143
       
      tes clé primaires ne sont pas logiques (enfin je pense)
      pourquoi met tu plusieurs attributs en clé primaire alors qu'un seul suffit?
      par exemple pour agence id_agence te suffit comme clé primaire il suffit de définir l'id comme un numéro automatique pour ne pas avoir de doublons de ta clé primaire
      pareil dans compte n_compte suffit, dans client il faut id_client



      ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

      ca je ne connais pas a quoi ca sert?


      dans ton create table tu ne définit pas de clé primaire et étrangère pour tes relations

      ton attribut solde n'apparait nul part non plus (je suppose qu'il est dans la table compte)

      pour la requête il faut que tu séléctionne nom prenom adresse (donc dans client) et solde (donc dans compte)

      ensuite il te faut une jointure entre tes tables
      pour ca utilise la clause inner join

      pour ca le plus simple après ton select tu met
      FROM table1 INNER JOIN table2
      ON table1.att = table2.att

      il faut évidemment que att dans table1 et table2 soient compatibles (donc la primaire d'une des tables et la clé étrangère (si jeme souviens bien) de la seconde table

      ensuite tu peux mettre tes where and or...


      pour ta requête tu auras besoin d'un select, d'une jointure entre client et compte (après avoir rajouté ton attribut solde si il est manquant dans ta bdd) puis d'une condition pour le nom

      autre chose a quoi te sert ta table administrateur?
      tu n'en a pas besoin pour cette requête en tout cas

      voila je te laisse réfléchir a tout ca (la requête n'est pas compliquée a faire si je ne me trompe pas tu as :
      SELECT...
      FROM...
      ON...
      WHERE....
      AND...

      (pour faire ton select avec un nom et un prenom)
      0