IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Tables liées / Jointures


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 40
    Points : 18
    Points
    18
    Par défaut Tables liées / Jointures
    Bonjours,

    Je suis en train de développer une aplication qui gère les stock d'une entreprise.

    J'ai donc :
    - une table client
    - une table type de produit
    - une table produit

    La table client contient le nom du client, ses coordonnées...

    La table type de produit contient le type de produit (stilos billes, crayon paier, stilos plumes, rêgles, équerres...) ainsi que d'autres informations.

    La table produit contient des informations tels que les matériaux constituant le produit, la couleur du produit...

    J'utilise 3 TIBQuery (un par table) et 3 TdbGrid (un par table).
    J'ai donc :
    - table client : ibq1 : dbg1
    - table type de produit : ibq2 : dbg2
    - table produit : ibq3 : dbg3

    Lorsque l'on sélectionne un client alors apparait dans dbg2 tous les types de produits relatif au client.

    Lorsqu'on sélectionne un type de produit alors apparait tous les produits relatif au type de produit.

    Tout fonctionne très bien.
    Mais il y à une opperation que je doit faire et que je ne connait pas....

    Je dois attribuer un même type de produit à plusieurs clients sans avoir à rajouter (une énième fois) ce type de produit dans la table type de produits.

    Les types de produit devant être uniques.

    Je solicite donc votre aide afin de pouvoir "faire dépendre" un type de produit à plusieurs clients.

    Je vous propose (afin d'illustrer mon problème) l'exemple suivant :

    Les tables sont les suivantes :
    - table client
    - table type de produit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    client_id_tp
    type_de_produit_id
    - table produit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    type_de_produit_id_p
    produit_id
    Le texte en italique représente les données contenues dans les tables.

    - table client (champ client_id) :
    duran sa
    yat sarl
    robert eurl


    - table type de produit (champ type_de_produit_id) :
    tournevis
    couteaux
    étuis


    - table produit (champ produit_id) :
    couteau doré 1
    couteau doré 546
    TournSuper
    ref 245
    ref 546
    étuis gdr format
    étuis petit format


    étuis gdr format est liés à étuis et à tournevis
    étuis petit format est liés à étuis et à couteaux

    étuis est liés à duran sa et à robert eurl
    tournevis est liés à yat sarl et à robert eurl
    couteaux est liés à robert eurl et à yat sarl

    Ce que je veux faire :
    - Avoir la liste des type de produit par client
    - Avoir la liste des produit par type de produit

    Le problème est que étuis est liés à duran sa et à robert eurl ce qui veut dire 2 lignes dans le dbgrid (une pour duran sa et une pour robert eurl) or je ne dois avoir qu’une ligne.

    Il ne doit y avoir qu’une ligne étuis qui doit être liées à duran sa et à robert eurl.

    Et ceci pour plusieurs raisons :
    - Avoir une base légère (pas de données en doubles, en triples…)
    - Pouvoir utiliser des fonctions d’enssembles (ex : nombre d’intitulés produits dans la table…)

    Et c’est la que je bloque…


    Si quelqu'un pouvai me venir en aide, cela me permettrait d'améliorrer notoirement le fonctionnement de mon logiciel.

    D'avance merci.
    Cordialement,

    Si quelqu'un pouvai me venir en aide, cela me permettrait d'améliorrer notoirement le fonctionnement de mon logiciel.
    Changement de speudo :
    m.beber devient giaco

  2. #2
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut

    Pour ton problème tu n'as qu'à utiliser une table de jointure contenant seulement les id de clients et ceux des types de produits (ça sera très léger) et une autre contenant seulement les id des produits avec les id des type de produits.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 40
    Points : 18
    Points
    18
    Par défaut Jointure
    Bonjours,

    MERCI MERCI MERCI MERCI

    Je fais une recherche sur les jointures et je poste ce que j'ai trouvé.

    Cordialement,
    Changement de speudo :
    m.beber devient giaco

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 40
    Points : 18
    Points
    18
    Par défaut Jointure
    Bonjours,

    Après consultation de "SQL pour les nuls" je n'est comprit la façon de les utiliser pour résoudre mon probleme.

    Aurriez vous une piste à me donner une piste ou un petit exemple afin de me permetre de comprendre l'utilisation des jointures.

    D'avance merci.
    Cordialement,
    Changement de speudo :
    m.beber devient giaco

  5. #5
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut
    Voici un exemple de table de jointure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    /* -----------------------------------------------------------------------------
          TABLE : T_AR_AREA
    ----------------------------------------------------------------------------- */
    CREATE TABLE T_AR_AREA 
    (
    	AR_ID int IDENTITY (1,1) NOT NULL PRIMARY KEY ,
    	...
    	AR_CENTER_Y real NULL ,
    ) 
     
    /* -----------------------------------------------------------------------------
          TABLE : T_AT_ATTRIBUTE
    ----------------------------------------------------------------------------- */
    CREATE TABLE T_AT_ATTRIBUTE 
    (
    	AT_ID int IDENTITY (1,1) NOT NULL PRIMARY KEY ,
    	...
    	AT_TYPE varchar (20) COLLATE French_CI_AS NULL ,
    )
     
    /* -----------------------------------------------------------------------------
          ça c'est la table de jointure
    ----------------------------------------------------------------------------- */
    CREATE TABLE T_AL_ATTRIBUTES_LIST 
    (
    	AL_AT_ID int NOT NULL REFERENCES T_AT_ATTRIBUTE (AT_ID) ,
    	AL_AR_ID int NOT NULL REFERENCES T_AR_AREA (AR_ID) ,
    	AL_VALUE varchar (100) COLLATE French_CI_AS NULL ,
    )

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 40
    Points : 18
    Points
    18
    Par défaut Jointures
    Bonjours,

    Tout d'abord un grand merci à trotters213 pour votre aide qui m'est très précieuse.

    J'ai reprit votre exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    CREATE TABLE client
    (
    client_id   varchar (20),
    tel           varchar (20),
    fax          varchar (20)
    );
     
    CREATE TABLE typedeproduit
    (
    client_id                      varchar (20),
    type_de_produit_id      varchar (20),
    foncion_du_produit      varchar (20)
    );
     
    CREATE TABLE produit
    (
    type_de_produit_id      varchar (20),
    produit_id                   varchar (20),
    ref_id                         varchar (20),
    infos                          varchar (20)
     
    );
     
    CREATE TABLE test_jointures
    (
    num_auto_incremente    integer,
    client_id                        varchar (20),
    type_de_produit_id        varchar (20),
    );
    Pour ajouter des donnée dans TABLE client, TABLE typedeproduit, TABLE produit jutilise inser, pour selectionner des données j'utilise select (avec where pour sélectionner des donnes dans deux tables) et pour supprimer des données, j'utilise delete.

    Je travaille avec bcb5 et j'utilise les composants Interbase.

    Mon SGBD est FireFox 1.5.

    Je me pose les question suivante :
    - Comment ajouter les données dans la table jointure ?
    - Commenr récuperrer les données dans cette la table jointure ?

    Je vous avoue être un peu (complêtement perdu en fait) devant ce problème...

    Je me demandait aussi si l'utilisation de trigers est nécessaire pour automatiser les oppérations de liaisons...

    En tout cas, merci pour votre aide.
    Cordialement,
    Changement de speudo :
    m.beber devient giaco

  7. #7
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut
    Ouula, c'est la première fois que tu fais du SQL non?
    Bon alors, oublions le trigger pour le moment :
    dans tes tables tu ne déclares ni clé primaire ni clé secondaire
    il est vraiment préférable, pour un id (qui sera ta fututre clé primaire je suppose), d'utiliser le type integer et surtout pas varchar.
    dans ta table de jointure, il n'y a pas d'interêt de créer un "num_auto_incremente", puisque cette table te servira seulement à savoir quel produit est utilisé par quel client et quel client utilise quel produit.
    FireFox c'est un navigateur web tu voulais peut-être dire FireBird
    pour ajouter des valeurs dans ta table de jointure, tu fais comme dans les autres table. Par exemple le client 1 utilise le produit 1 tu fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TABLE TJ_CLIENT_TYPE
    (
    client_id int NOT NULL REFERENCES client, (client_id), 
    type_de_produit_id int NOT NULL REFERENCES typedeproduit  (type_de_produit_id)
    );
     
    INSERT INTO client VALUES (1,...)
    INSERT INTO produit VALUES (1,...)
    INSERT INTO  TJ_CLIENT_TYPE VALUES (1,1)
    Pour tous les pbs que tu peux rencontrer en SQL, jette un coup d'oeil sur le lien SQL que je donne ci-dessous

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 40
    Points : 18
    Points
    18
    Par défaut Jointures
    Bonjours,

    Tout d'abord, un grandMERCI pour votre aide.

    Arrow FireFox c'est un navigateur web Very Happy tu voulais peut-être dire FireBird Wink
    Exact...

    Arrow dans tes tables tu ne déclares ni clé primaire ni clé secondaire
    C'était pour simplifier mon exemple.

    il est vraiment préférable, pour un id (qui sera ta fututre clé primaire je suppose), d'utiliser le type integer et surtout pas varchar.
    Je sais. Mais l'exemple donné est trés simplifié et ne montre pas le champ num_client qui est mon index

    MessagePosté le: Ven Avr 29, 2005 11:54 Sujet du message:
    Ouula, c'est la première fois que tu fais du SQL non?
    Non mais je n'ai du jusqu'à présent me servir que d'instructions simples et cela ne fait pas très longtemps que j'ai abandoné le BDE pour les composants Interbase (donc que je me sert de SQL).

    J'ai trouvé l'URL suivante (Merci) :
    http://sqlpro.developpez.com/cours/sqlaz/jointures/

    Dans mon aplication je me sert de select et de where
    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select * from produit where type_de_produit_id = 'tournevis';
    Si j'ai bien comprit, les jointures afficherront le même résultat que la ligne si dessus.
    Or je ne doit afficher qu'une ligne car toutes les lignes de la table produit qui qui contiennent tournevis dans leur champ type_de_produit_id ont toutes les mêmes valeurs pour tous leurs autre champs.

    Et c'est là que se pose mon problème... Comment faire ?

    Encore merci pour votre aide.

    Cordialement,
    Changement de speudo :
    m.beber devient giaco

  9. #9
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut
    Citation Envoyé par giaco
    Tout d'abord, un grandMERCI pour votre aide.
    Je préfères pas que tu me remercies maintenant parce que si après ton problème n'est pas résolu ça le fait pas (PS : "ton aide" j'ai que 19ans ).
    Bon revenons au problème :
    Citation Envoyé par giaco
    toutes les lignes de la table produit qui qui contiennent tournevis dans leur champ type_de_produit_id ont toutes les mêmes valeurs pour tous leurs autre champs.
    C'est justement là l'utilité de la table de jointure : tu n'auras plus de champs type_de_produit_id dans la table produit. tu aura simplement un numéro de produit qui sera associé à un numéro de typedeproduit.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 40
    Points : 18
    Points
    18
    Par défaut Jointures
    Bonjours,

    J'ai donc re-créé mon exemple :

    Voici mes tables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    CREATE TABLE client 
    ( 
    client_id   varchar (20), 
    tel           varchar (20), 
    fax          varchar (20) 
    ); 
     
    CREATE TABLE typedeproduit 
    (  
    type_de_produit_id      varchar (20), 
    foncion_du_produit      varchar (20) 
    ); 
     
    CREATE TABLE produit 
    (  
    produit_id                   varchar (20), 
    ref_id                         varchar (20), 
    infos                          varchar (20) 
    );
    Voici mes tables de jointures :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    CREATE TABLE client_typedeproduit 
    (  
    client_id                 varchar (20), 
    type_de_produit_id        varchar (20), 
    );
     
    CREATE TABLE typedeproduit_ produit
    (  
    type_de_produit_id       varchar (20), 
    produit_id               varchar (20), 
    );
    Jusque la, j'ai comprit.

    Maintenant je veu connaitre le contenu de la table typedeproduit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM typedeproduit;
    Et la toutes les lignes de la table typedeproduit apparaissent.
    Et ce n'est pas ce que je veux...

    Je ne voudrait voire qu'une ligne par type_de_produit_id.
    Or je voudrais ne voir qu'une ligne par type_de_produit_id.
    exemple :
    Une ligne pour tournevis
    Une ligne pour couteaux
    Une ligne pour étuis

    Et c'est la que je bloque.

    PS : "ton aide" j'ai que 19ans
    Pourrais je solicitier une nouvelle fois ton aide s'il te plais.

    Je préfères pas que tu me remercies maintenant parce que si après ton problème n'est pas résolu ça le fait pas
    Oki doki... Alors merci de m'avoir consacré un peu de ton temps.

    Cordialement,
    Changement de speudo :
    m.beber devient giaco

  11. #11
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut
    yeap
    C'est normal que tu ais tout.
    Ta base est mal conçue je pense : si tu as plusieur fois les même valeurs pourquoi tu ne crées pas une table valeur_type comme ça :
    id valeur | nom
    1 | tournevis
    2 | couteaux
    3 | étuis
    ...

    et tu mets une clé étrangère dans ta table typeproduit qui fait le lien vers l'id de cette table (comme ça c'est plus rapide et bien moins gros en taille).
    De ce fait tu n'auras plus qu'à lire ta table valeur_type pour connaitre chaque outils (tournevbis, couteaux,...).

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 40
    Points : 18
    Points
    18
    Par défaut Jointures
    Salut,

    La solution que tu me propose est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    id valeur | nom
    1 | tournevis
    2 | couteaux
    3 | étuis
    tu mets une clé étrangère dans ta table typeproduit qui fait le lien vers l'id de cette table (comme ça c'est plus rapide et bien moins gros en taille).
    De ce fait tu n'auras plus qu'à lire ta table valeur_type pour connaitre chaque outils (tournevbis, couteaux,...).
    C'est une très bonne idée pour alléger ma table mais cela ne résoud pas mon problème....

    Je reprend mon exemple :
    J'ai les 2 tables si dessous.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    CREATE TABLE client 
    ( 
    client_id   varchar (20), 
    tel           varchar (20), 
    fax          varchar (20) 
    ); 
     
     
    CREATE TABLE typedeproduit 
    (  
    type_de_produit_id      varchar (20), 
    foncion_du_produit      varchar (20) 
    );
    J'ai donc :
    • TABLE client
      | client_id | tel | fax |
      Robert sa 0179234440 0145785568
      Saz sa 0209232040 0145712457
      Melinda sarl 0179234440 0145785568


      TABLE typedeproduit
      | type_de_produit_id | foncion_du_produit |
      tournevis Visser
      couteaux Couper
      étuis Ranger et protéger
      cutter Couper du carton
      ciseaux Couper du papier


    tournevis et étuis sont attribués à Robert sa.
    ciseaux, couteaux et tournevis sont attribués à Saz sa.
    tournevis est attribué à Melinda sarl.

    Je ne veux avoir qu'une ligne pour :
    tournevis
    couteaux
    étuis
    cutter
    ciseaux

    Si tu pouvais m'aider à résoudre mon problème, cela me pemetrait d'améliorer grandement mon aplication.

    D'avance merci,
    Cordialement,
    Changement de speudo :
    m.beber devient giaco

  13. #13
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut
    lol, je comprends pas ton problème, tu veux une ligne comme ça :
    tournevis, couteaux, étuis, cutter, ciseaux
    ou tu veux une ligne pour chaque :
    Montres moi ce que tu veux que ça t'affiche (ça ira plus vite).

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 40
    Points : 18
    Points
    18
    Par défaut Jointures
    Salut,

    Mon poste n'est pas très très explicite...
    En tout cas c'est gentils de m'aider.
    Merci pour les conseils que tu m'as déjat donnés.

    Voici l'illustration de ce que je désire obtenir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    CREATE TABLE client 
    (  
    client_id     varchar (20), 
    tel           varchar (20), 
    fax           varchar (20) 
    ); 
     
     
    CREATE TABLE typedeproduit 
    (  
    client_id               varchar (20),
    type_de_produit_id      varchar (20), 
    foncion_du_produit      varchar (20) 
    );
    Mes tables contiennent les données suivantes :
    • TABLE client
      | client_id | tel | fax |
      Robert sa 0179234440 0145785568
      Saz sa 0209232040 0145712457
      Melinda sarl 0179234440 0145785568


      TABLE typedeproduit
      | client_id | type_de_produit_id | foncion_du_produit |
      Robert sa tournevis Visser
      Robert sa couteaux Couper
      Saz sa tournevis Visser
      Saz sa couteaux Couper
      Saz sa étuis Ranger et protéger
      Melinda sarl tournevis Visser
      Melinda sarl couteaux Couper
      Melinda sarl cutter Couper du carton
      Melinda sarl ciseaux Couper du papier



    Ce que j’obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM client;
    Je vois dans ma DBGrid :
    | client_id | tel | fax |
    Robert sa 0179234440 0145785568
    Saz sa 0209232040 0145712457
    Melinda sarl 0179234440 0145785568

    Jusque la c’est ce que je voulait.

    C’est maintenant que je rencontre un problème.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM typedeproduit;
    Je vois dans ma DBGrid :
    • | client_id | type_de_produit_id | foncion_du_produit |
      Robert sa tournevis Visser
      Robert sa couteaux Couper
      Saz sa tournevis Visser
      Saz sa couteaux Couper
      Saz sa étuis Ranger et protéger
      Melinda sarl tournevis Visser
      Melinda sarl couteaux Couper
      Melinda sarl cutter Couper du carton
      Melinda sarl ciseaux Couper du papier

    Et le problème se situe la.

    Je voudrais voir dans ma DBGrid soit :
    • | client_id | type_de_produit_id | foncion_du_produit |
      Robert sa Saz sa Melinda sarl tournevis Visser
      Robert sa Saz sa Melinda sarl couteaux Couper
      Melinda sarl cutter Couper du carton
      Melinda sarl ciseaux Couper du papier

    soit :
    • | type_de_produit_id | foncion_du_produit |
      tournevis Visser
      couteaux Couper
      cutter Couper du carton
      ciseaux Couper du papier

    Je voudrais au obtenir le résultat suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT "type_de_produit_id", "foncion_du_produit" FROM typedeproduit WHERE client_id = Robert sa;
    Je voudrais voir dans ma DBGrid :
    • | type_de_produit_id | foncion_du_produit |
      tournevis Visser
      couteaux Couper


    C’est ce que je dois faire.

    Encore MERCI pour tout,
    Cordialement,[/list]
    Changement de speudo :
    m.beber devient giaco

  15. #15
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut
    heuuuu... perso je sais pas faire ça :
    Robert sa Saz sa Melinda sarl tournevis Visser
    Robert sa Saz sa Melinda sarl couteaux Couper
    Melinda sarl cutter Couper du carton
    Melinda sarl ciseaux Couper du papier
    (je sais même pas si tu peux).
    Par contre ça :
    tournevis Visser
    couteaux Couper
    cutter Couper du carton
    ciseaux Couper du papier
    c'est en faisant la table que je t'ai dit que ça serait le plsu simple (ça éviterais la redondance d'information et diminuerais la taille de ta base et par conséquence la vitesse de traitements, ...).
    Si ta BD était bien conçu, tu devrais avoir ça :
    | client_id | id_type |
    Robert sa 1
    Robert sa 2
    Saz sa 1
    Saz sa 2
    Saz sa 3
    Melinda sarl 1
    Melinda sarl 2
    Melinda sarl 4
    Melinda sarl 5

    id_type | type_de_produit_id | foncion_du_produit |
    1 tournevis Visser
    2 couteaux Couper
    3 étuis Ranger et protéger
    4 cutter Couper du carton
    5 ciseaux Couper du papier
    Ce qui répondrais parfaitement à ton 2° problème (je pense).

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 40
    Points : 18
    Points
    18
    Par défaut Dédoublonnage
    Salut,

    J'ai peut être un début de solution :
    http://<br /> http://sqlpro.develop...eurs/#L8<br />

    Encore merci pour ton aide.

    Cordialement,
    Changement de speudo :
    m.beber devient giaco

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 40
    Points : 18
    Points
    18
    Par défaut DISTINCT
    Salut,

    J'ai trouvé la solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT DISTINCT "type_de_produit_id", "foncion_du_produit" FROM typedeproduit WHERE client_id = Robert sa;
    Encore merci pour ton aide.

    Cordialement,
    Changement de speudo :
    m.beber devient giaco

  18. #18
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut
    mais t'avais pas testé avec le DISTINCT (j'aurais du te le demander quel c..., bon pas grave c'est résolu) mais j'avais pas bien compris ton prob apparemment.

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 40
    Points : 18
    Points
    18
    Par défaut DISTINC
    Bonjours,

    j'avais pas bien compris ton prob
    Je crois que je n'avai pas bien comprit moi non plus....

    En tout cas merci pour les conseils que tu m'as donnés car ils vont servir à optimiser mon appli.

    Cordialement,
    Changement de speudo :
    m.beber devient giaco

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/06/2011, 11h14
  2. jointure avec 3 tables liées par la méme relation
    Par lenstoi dans le forum Langage SQL
    Réponses: 5
    Dernier message: 29/08/2007, 10h17
  3. rejoindre des tables liée par jointure
    Par guy88 dans le forum Modélisation
    Réponses: 3
    Dernier message: 28/08/2007, 11h11
  4. Count et tables liées ?
    Par seb_perl dans le forum Requêtes
    Réponses: 2
    Dernier message: 09/02/2004, 12h52
  5. 2 Count() sur deux tables en jointures gauches
    Par Alexandre T dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/09/2003, 16h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo