à l'aide si vous plait

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. 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
    1. 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. 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