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

Requêtes et SQL. Discussion :

requêter sur 3 tables (pour le moment !)


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 29
    Points : 14
    Points
    14
    Par défaut requêter sur 3 tables (pour le moment !)
    Bonjour à tous,

    petite question : j'aimerai créer une requête à partir d'une table client, et 2 tables "montant". je m'explique

    la table1 comporte uniquement des numéros de client
    la table2 comporte certains des numéros clients de la table1 avec une colonne "montant" et une colonne "mois"
    la table3 comporte les mêmes numéros clients que la table2 plus d'autres présents dans la table1 avec une colonne "montant" et une colonne "mois"

    mon but : pour le même mois, obtenir les numéros de clients qui apparaissent dans la table2 et la table3 et les montants correspondants.

    merci de votre aide...

  2. #2
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut


    Pour répondre à ton problème, je te propose de lire ce tuto sur les différents types de jointure que tu peux utiliser dans les requetes

    Bonne lecture
    Jeannot

    Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., Sources VBA

    Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 29
    Points : 14
    Points
    14
    Par défaut
    Merci pour la réponse, cependant, je ne suis pas sûre que le choix d'une jointure soie la clé de mon problème, car dans ma requête j'utilise les trois tables, pas 2, enfin je ne sais pas.

  4. #4
    Rédacteur
    Avatar de jsd03
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2008
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Août 2008
    Messages : 1 221
    Points : 6 506
    Points
    6 506
    Par défaut
    Bonjour,

    quand tu dis
    obtenir les numéros de clients qui apparaissent dans la table2 et la table3
    tu parles des enregistrements qui sont A LA FOIS compris dans la table2 et la table 3 ou tu veux tous les enregistrements des deux tables ?

    Tu peux voir du côté des opérateurs UNION et INTERSECT (en Oracle ça existe alors peut être aussi en Access) où sinon regarde l'opérateur EXISTS.

    Un petit lien pour expliquer tout ça : http://www.plb.fr/ccm/sql/sqlensem.php
    Google est ton ami mais ton voisin aussi

    Modérateur BI - Responsable Talend
    Mes tutoriels - FAQ Talend - FAQ SQL*Plus

    Avant toute chose : lire le mode d'emploi du forum et ses règles.
    Suivez @Developpez sur twitter !

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 29
    Points : 14
    Points
    14
    Par défaut
    merci, je vais lire çà, mais je suis pas une pro alors si j'ai d'autres questions...

  6. #6
    Rédacteur
    Avatar de jsd03
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2008
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Août 2008
    Messages : 1 221
    Points : 6 506
    Points
    6 506
    Par défaut
    On est là pour ça du moment que la question est bien posée
    Google est ton ami mais ton voisin aussi

    Modérateur BI - Responsable Talend
    Mes tutoriels - FAQ Talend - FAQ SQL*Plus

    Avant toute chose : lire le mode d'emploi du forum et ses règles.
    Suivez @Developpez sur twitter !

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 29
    Points : 14
    Points
    14
    Par défaut
    bon alors je vais réessayer d'exposer plus clairement mon problème :

    à la base, j'ai une table avec des numéros de client, des numéros de contrat, des codes produits et 9 colonnes de montants .

    Dans la seconde table, j'ai aussi des numéros de clients, des numéros de contrat, des codes produits, une colonne montants (qui correspond à la somme de trois colonnes de la table 1, des durées de contrat.

    Les 2 tables sont donc différentes, mais ont des numéros de clients en commun.

    Mon but est de récupérer toutes les informations de la table 1 + toutes les informations de la table 2.

    j'avais créer une 3ème table avec les num clients des 2 tables mais çà ne fonctionne pas comme je voudrais avec des jointures 1 vers N

    alors c'est mieux ou pire ???

  8. #8
    Rédacteur
    Avatar de jsd03
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2008
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Août 2008
    Messages : 1 221
    Points : 6 506
    Points
    6 506
    Par défaut
    Je pense que ça, ça devrait convenir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select table1.*, table2.*
    from table1 LEFT OUTER JOIN vente 
    on table2.id_client = table1.id_client
    Google est ton ami mais ton voisin aussi

    Modérateur BI - Responsable Talend
    Mes tutoriels - FAQ Talend - FAQ SQL*Plus

    Avant toute chose : lire le mode d'emploi du forum et ses règles.
    Suivez @Developpez sur twitter !

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 29
    Points : 14
    Points
    14
    Par défaut
    euh...à la place de vente je dois mettre quoi ??

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    503
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 503
    Points : 503
    Points
    503
    Par défaut
    Salut,

    tu dois mettre table2 à la place de vente
    6ril25



    "Par trois méthodes nous pouvons apprendre la sagesse : d'abord, par la réflexion qui est la plus noble; en second lieu, par l'imitation, qui est la plus facile; et troisième, par l'expérience, qui est la plus amère." Confucius

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 29
    Points : 14
    Points
    14
    Par défaut
    oui merci, j'avais rectifié... et...çà fonctionne parfaitement merci beaucoup, heureusement que vous êtes là !!!! si si !!!

  12. #12
    Rédacteur
    Avatar de jsd03
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2008
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Août 2008
    Messages : 1 221
    Points : 6 506
    Points
    6 506
    Par défaut
    Désolé pour la table vente j'avais fait un test sur une table en local et j'ai pas fait gaffe en changeant les noms.
    Google est ton ami mais ton voisin aussi

    Modérateur BI - Responsable Talend
    Mes tutoriels - FAQ Talend - FAQ SQL*Plus

    Avant toute chose : lire le mode d'emploi du forum et ses règles.
    Suivez @Developpez sur twitter !

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 29
    Points : 14
    Points
    14
    Par défaut
    bonjour,

    de retour, car je me suis emballée un peu trop vite hier et il me reste un gros problème tout de même car s'il me met bien tous les id.client de la table1, il supprime les id.client de la table2 qui ne sont pas présents dans la table1.

    vous en pensez quoi messieurs ???

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 29
    Points : 14
    Points
    14
    Par défaut
    je re-précise que je souhaite tous les enregistrements de la table 1 et tous ceux de la table 2 mais les tables sont différentes !

    c'est faisable çà ?

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 29
    Points : 14
    Points
    14
    Par défaut
    Bonjour,

    peut-être que je n'ai pas été assez claire auparavant, alors je joins une description grossière de mes tables et du résultat que je souhaiterais obtenir, je voudrais par agence et par produits les entrées et le stock sur la meme table sachant qu'il peut y avoir du stock sans entrée et des entrées sans stock !
    merci d'avance.

    Table 1
    agence produit concat ag/prdt Entrées
    001 AB 001AB 1 000
    002 AC 002AC 2 500
    004 AD 004AD 10 000
    005 AE 005AE 6 500

    Table 2
    agence produit concat ag/prdt Stock
    001 AB 001AB 60 000
    003 AC 003AC 2 500
    004 AD 004AD 85 000
    006 AF 006AF 6 500

    Table Résultat souhaitée
    agence produit concat ag/prdt Entrées Stock
    001 AB 001AB 1 000 60 000
    002 AC 002AC 2 500 0
    003 AC 003AC 0 2 500
    004 AD 004AD 10 000 85 000
    005 AE 005AE 6 500 0
    006 AF 006AF 0 6 500

  16. #16
    Membre expérimenté
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Points : 1 535
    Points
    1 535
    Par défaut
    Bonjour,
    essaie ceci :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT Table1.Agence, Table1.Produit, Table1.Concat, Entrees, Nz(Stock,0)
    FROM Table1 LEFT JOIN Table2 ON Table1.Agence=Table2.Agence
    UNION
    SELECT Agence,Produit, Concat,0,Stock
    FROM Table2
    WHERE Agence NOT IN (SELECT Agence FROM Table1);

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 29
    Points : 14
    Points
    14
    Par défaut
    Bonjour,

    et d'abord merci pour ta réponse, mais çà ne fonctionne pas : au lieu d'avoir les entrées et les stocks sur 2 colonnes différentes, je n'en ai qu'une, il doit cumuler les montants...

    Pour info j'ai du retirer le 0 de cette ligne car il me disait que le nombre de colonnes était différent dans les tables :

    SELECT Agence,Produit, Concat,0,Stock

    je ne sais pas si çà importe...

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 29
    Points : 14
    Points
    14
    Par défaut
    c'est bon, j'ai mis un peu les mains dans le cambouis, j'ai trifouillé et j'ai obtenu ce que je cherchais !

    Merci à tous ceux qui ont bien voulu se pencher sur mon problème et spécialement à ilank qui l'a résolu !

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

Discussions similaires

  1. [MySQL-5.6] Faire une requête sur deux tables pour avoir la valeur MAX sans le GROUP BY
    Par emykev22 dans le forum Requêtes
    Réponses: 1
    Dernier message: 04/06/2014, 12h12
  2. Aide pour une requête sur deux tables
    Par Andry dans le forum Développement
    Réponses: 2
    Dernier message: 05/11/2007, 07h14
  3. Aide pour une requête sur deux tables
    Par Andry dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/11/2007, 07h14
  4. problème de requête SQL sur 3 tables pour un while
    Par carmen256 dans le forum Requêtes
    Réponses: 3
    Dernier message: 13/04/2006, 16h55
  5. Besoin d'aide pour requête sur grosse table
    Par Fabouney dans le forum Langage SQL
    Réponses: 3
    Dernier message: 25/01/2006, 09h01

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