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

 MySQL Discussion :

Jointure de tables


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Touche à tout
    Inscrit en
    Mai 2017
    Messages
    480
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Touche à tout

    Informations forums :
    Inscription : Mai 2017
    Messages : 480
    Par défaut Jointure de tables
    Bonjour,

    J'ai deux 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
     
    Table 1:
    +-------------+
    | Code erreur |
    +-------------+
    |  1          | 
    |  2          |
    |  3          |
    |  4          |
    +-------------+
     
    Table 2:
    +-------------+-------------+
    | sCodeErreur | sErreurText |
    +-------------+-------------+
    | 1           | PLUIE       |
    | 2           | SEC         |
    | 3           | VENT        |
    | 4           | RIEN        |
    +-------------+-------------+
    Je voudrais afficher le test d'erreur (sErreurText) contenu dans ma table 2 dans mon tableau au lieu de la valeur Code Erreur de ma table 1.

    Merci par avance

  2. #2
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 230
    Par défaut
    Je pourrais te donner la réponse, mais je préfère te donner ce lien : https://www.developpez.com/telecharg...fd684fc6d483eb , parce que quand quelqu'un me demande du poisson, je préfère lui apprendre à pécher que de lui donner du poisson.

    Si tu regardes dans le bandeau en haut de l'écran, tu vois un lien qui si'appelle tutoriels. J'ai ouvert un des tutoriels. C'est un PdF de 105 pages... et la réponse à ta question se trouve en tout début, dès la page 9. Tu as le droit de lire la suite

  3. #3
    Membre émérite

    Homme Profil pro
    linux, pascal, HTML
    Inscrit en
    Mars 2002
    Messages
    649
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Belgique

    Informations professionnelles :
    Activité : linux, pascal, HTML
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2002
    Messages : 649
    Billets dans le blog
    1
    Par défaut
    Voilà
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT "sErreurText" from "Table 2" right join "Table 1" on "scodeErreur" ="Code erreur"
    Mais que dire des tables !!
    Comme TBC92 l'as tres justement dit, lire un bon tuto est vraiment nécessaire !

  4. #4
    Membre éclairé
    Homme Profil pro
    Touche à tout
    Inscrit en
    Mai 2017
    Messages
    480
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Touche à tout

    Informations forums :
    Inscription : Mai 2017
    Messages : 480
    Par défaut
    Merci, je vais faire un peu de lecture ^^

  5. #5
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 230
    Par défaut
    Comme le suggère Michel, le problème essentiel est dans l'organisation des tables. Ici, ta table1 n'apporte rien. tu devrais la supprimer, et travailler uniquement avec table2. Et ça, ce ne sera probablement pas expliqué dans un tutoriel.

  6. #6
    Membre éclairé
    Homme Profil pro
    Touche à tout
    Inscrit en
    Mai 2017
    Messages
    480
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Touche à tout

    Informations forums :
    Inscription : Mai 2017
    Messages : 480
    Par défaut
    C'est tout bon ^^ merci

  7. #7
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 900
    Par défaut
    Salut à tous.

    @ Michel : 1) En MySql, les noms des colonnes ne se mettent pas entre guillemets sinon ils sont interprétés comme des chaînes de caractères.

    2) Ensuite, il ne faut pas faire un "right join" mais un "inner join". Pourquoi ?
    Il y a toujours une correspondance entre la colonne "code erreur" de la première table avec la colonne "sCodeErreur" de la seconde table.

    3) Afin d'identifier d'une manière unique les colonnes des deux tables, on utilise des alias, ce que vous ne faites pas !

    La bonne écriture de la requête est donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select      t1.CodeErreur,
                t2.sCodeErreur,
                t2.sErreurText
          from  Table_1 as t1
     
    inner join  Table_2 as t2
            on  t2.sCodeErreur = t1.CodeErreur;
    Citation Envoyé par Michel
    Comme TBC92 l'as très justement dit, lire un bon tuto est vraiment nécessaire !
    Et ne pas communiquer de mauvaise habitude est tout aussi important !
    Ah oui, en français, on ne dit pas tutoriel mais didacticiel.

    Citation Envoyé par tbc92
    parce que quand quelqu'un me demande du poisson, je préfère lui apprendre à pécher que de lui donner du poisson.
    Vous ne lui apprenez rien, vous déléguez cela à quelqu'un d'autre.

    @+

  8. #8
    Membre émérite

    Homme Profil pro
    linux, pascal, HTML
    Inscrit en
    Mars 2002
    Messages
    649
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Belgique

    Informations professionnelles :
    Activité : linux, pascal, HTML
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2002
    Messages : 649
    Billets dans le blog
    1
    Par défaut
    Que celui qui n'a jamais péché lui jette la première pierre !
    Ceci dit, Merci pour les remarques forts judicieuses !
    Concernant les guillemets, j'ai utilisé le sql de OpenOffice juste pour tester (en vitesse) et là, il sont quasi obligatoire !
    De plus, il a utilisé des noms de tables genre "table 1" et non "table_1" et de même "code erreur" avec un espace et donc ....
    Effectivement, après essai mysql n'aime pas cela donc j'ai recréé les deux tables dans une base mysql
    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
    mysql> select * from `table 1`;
    +-------------+
    | code erreur |
    +-------------+
    |           1 |
    |           2 |
    |           3 |
    |           4 |
    +-------------+
    4 rows in set (0.00 sec)
     
    mysql> select * from `table 2`;
    +-------------+-------------+
    | sCodeErreur | sErreurText |
    +-------------+-------------+
    |           1 | PLUIE       |
    |           2 | SEC         |
    |           3 | VENT        |
    |           4 | RIEN        |
    +-------------+-------------+
    ce qui donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT sErreurText from `table 2`  join `table 1` on scodeErreur =`Code erreur`;
    avec des apostrophes inverses
    Pour les alias, vu la complexité de la requête, je n'ai pas jugé nécessaire d'en ajouter.
    Enfin, j'ai supposé, à tort peur-être, que la première table était plus longue que celle présentée avec des répétitions sinon, je ne vois pas à quoi elle sert.
    Tutoriel, didacticiel...les deux se rencontrent dans la littérature et donc, désolé, mais je m'en fou complètement !

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

Discussions similaires

  1. Jointure de table avec Interbase
    Par ada_b dans le forum InterBase
    Réponses: 21
    Dernier message: 12/05/2010, 19h52
  2. Réponses: 7
    Dernier message: 10/02/2005, 00h13
  3. [FB1.5]Vue avec jointure sur tables ?
    Par Sitting Bull dans le forum SQL
    Réponses: 2
    Dernier message: 07/12/2004, 17h07
  4. jointure sur table et procedure stocké
    Par pram dans le forum SQL
    Réponses: 3
    Dernier message: 18/11/2004, 21h56
  5. requete(jointure 2 tables) qui marche pas
    Par DaxTaz dans le forum Langage SQL
    Réponses: 3
    Dernier message: 01/06/2004, 17h50

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