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 :

affichage d'un select concernant plusieurs tables


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 5
    Par défaut affichage d'un select concernant plusieurs tables
    Bonjour,
    j'ai un petit souci d'affichage d'une requête select,
    et j'aimerais vous en exposer le contenu,
    pour voir ce qui pourrait être fait.

    Voilà, pour simplifier,
    j'ai 3 tables.

    -1ere table:
    - contient des champs du type:
    ----------------------------------------
    table1_id | table1_nom | table1_prenom |
    ----------------------------------------
    1 | dupond | marc |
    ----------------------------------------
    2 | doe | john |
    ----------------------------------------

    2eme table:
    - contient des champs du type:

    ----------------------------------------
    table2_id | table2_livre | table2_genre |
    ----------------------------------------
    1 | asterix | BD |
    ----------------------------------------
    2 | bidon | roman |
    ----------------------------------------

    3eme table:
    - contiendrait :
    ----------------------------------------
    table3_id | table1_id | table2_id |
    ----------------------------------------
    1 | 1 | 2 |
    ----------------------------------------
    2 | 2 | 1 |
    ----------------------------------------

    Ne tenez pas compte des données en tant que tel,
    j'ai inventé sur le tas, c'est le principe de ce que je cherche à obtenir à l'affichage que j'aimerais vous exposer.

    Alors en fait, j'aimerais obtenir, en faisant un select de la table 3,
    l'affichage des données correspondantes aux tables 1 et 2.

    Et je ne sais pas comment faire,
    car il faudrait pouvoir afficher à la place de table1_id, les champs table1_nom et table1_prenom,
    et aussi afficher à la place de table2_id, les champs table2_livre et table2_genre.

    Pour obtenir d'après les données de la table 3, un tableau de ce style :

    -----------------------------------------------------------
    table1_nom | table1_prenom | table2_livre | table2_genre |
    -----------------------------------------------------------
    dupond | marc | bidon | roman |
    -----------------------------------------------------------
    doe | john | asterix | BD |
    -----------------------------------------------------------

    Voilà, merci d'avance pour votre aide,
    et n'hésitez pas à me dire si je pars dans une mauvaise réflexion,
    car je débute et je n'ai fait que de l'autoformation pour le moment.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    Pour bien débuter en SQL : Le Cours SQL de SQLPro
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 5
    Par défaut
    bonjour,

    tout d'abord j'aimerais préciser que malgré le fait que je suis débutant,
    j'ai lu plusieurs fois les documentations diverses,

    mais j'aimerais au moins qu'on me dise si ma façon de créer mes tables est correcte,
    ou si au contraire, j'ai un problème de conception.

    j'espère que quelqu'un prendra le temps de me répondre autre chose que "la doc est là",
    car ca fait plusieurs semaines que je bloque.

    voilà, merci d'avance.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 11
    Par défaut
    je pense que tu devrai avoir un truc du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select table1_nom,table_1prenom,table2_livre, table2_genre from table1 left outer join table3 right outer join table2;

  5. #5
    Expert éminent
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 210
    Billets dans le blog
    16
    Par défaut
    Citation Envoyé par novice_du_11
    j'aimerais au moins qu'on me dise si ma façon de créer mes tables est correcte,
    ou si au contraire, j'ai un problème de conception.
    La façon de créer les tables est correcte. Mais pour modéliser, utilisez un outil du genre Toad Data Modeler (gratuit) ou DBDesigner (gratuit).

    Quant à la façon d'obtenir le résultat, raisonnez ainsi :

    1) je procède à la jointure naturelle des tables table1 et table3 (jointure sur les attributs communs).

    2) je procède à la jointure naturelle de la table résultat et de la table table2.

    3) j'effectue une projection du résultat sur les colonnes que je veux afficher.

    4) je traduis tout cela, de manière déclarative à l'aide d'une requête SQL.
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 5
    Par défaut
    Citation Envoyé par fsmrel Voir le message
    La façon de créer les tables est correcte. Mais pour modéliser, utilisez un outil du genre Toad Data Modeler (gratuit) ou DBDesigner (gratuit).

    Quant à la façon d'obtenir le résultat, raisonnez ainsi :

    1) je procède à la jointure naturelle des tables table1 et table3 (jointure sur les attributs communs).

    2) je procède à la jointure naturelle de la table résultat et de la table table2.

    3) j'effectue une projection du résultat sur les colonnes que je veux afficher.

    4) je traduis tout cela, de manière déclarative à l'aide d'une requête SQL.
    j'ai suivi votre conseil,
    et je suis arrivé à faire cette requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT a.table1_nom, a.table1_prenom, b.table2_livre, b.table2_genre
    FROM table1 a, table2 b
    JOIN table3 c ON a.table1_id = c.table1_id AND b.table2_id = c.table2_id
    et j'obtiens ceci :

    table1_nom//table1_prenom//table2_livre//table2_genre
    dupond//marc//bidon//roman
    doe//john//asterix//BD


    Voilà, je pense que c'est correct,
    et donc si vous me confirmez,
    le sujet sera clos


    en tout cas, merci de vos réponses,
    et plus particulièrement un grand merci à fsmrel

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

Discussions similaires

  1. select sur plusieurs tables
    Par julien.63 dans le forum Requêtes
    Réponses: 6
    Dernier message: 16/05/2006, 17h29
  2. [SQL Access] SELECT sur plusieurs Tables et Composer Champs
    Par Giuseppe dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 07/11/2005, 14h00
  3. SELECT sur plusieurs Tables et Composer Champs
    Par Giuseppe dans le forum Langage SQL
    Réponses: 4
    Dernier message: 07/11/2005, 12h27
  4. un seul SELECT sur plusieurs tables ?
    Par deloo dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/09/2005, 12h57
  5. select sur plusieurs table, question sur jointure
    Par Schulman dans le forum Langage SQL
    Réponses: 7
    Dernier message: 03/09/2004, 13h54

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