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 :

problème liaison entre les tables


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 134
    Par défaut problème liaison entre les tables
    Bonjour,

    j'aurais aimé savoir s'il est possible de lier plusieurs clés étrangères d'une même table vers la même clé.

    En effet, mes tables sont :
    Table match(n_match, date, n_equipeA, n_equipeB)
    Table équipe(n_equipe, nom_equipe, nb_joueur...)

    Et en fait, j'aurais besoin de lier n_equipeA et n_equipeB de la table match vers n_equipe de la table équipe. Quelqu'un sait-il comment je pourrai faire et s'il est possible de faire un double lien et si cela ne créé pas des erreurs..

    Merci d'avance

  2. #2
    rsc
    rsc est déconnecté
    Membre émérite
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Par défaut
    Pas le moindre problème !
    S'il agit de créer des clés étrangères, la syntaxe va dépendre de ton SGBD. S'il s'agit de requête, tu peux faire une jointure comme celle-ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT A.n_equipe AS EquipeA, B.n_equipe AS EquipeB
    FROM MATCH
    JOIN EQUIPE A
    ON A.n_equipe = MATCH.n_equipe
    JOIN EQUIPE B
    ON B.n_equipe = MATCH.n_equipe

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 134
    Par défaut
    Merci de ta réponse.
    A et B représente quoi exactement ? des tables ?

    Pour info, j'utilise Access 2003

  4. #4
    rsc
    rsc est déconnecté
    Membre émérite
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Par défaut
    Ce sont des alias de tables. (On peut aussi écrire EQUIPE AS A)
    Dès qu'il y a plusieurs tables dans ta requête, tu risques d'avoir des ambiguités sur les noms de champs, et il est donc vivement conseillé de les préfixer par le nom de la table dont ils sont tirés. Les alias permettent dans ce cas de raccourcir l'écriture :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT T.MonChamp
    FROM MatableAuNomARallonge T
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT MatableAuNomARallonge .MonChamp
    FROM MatableAuNomARallonge
    Dans le cas où une table apparaît deux fois, les alias deviennent indispensables : dans ton cas, cela permet à la requête de distinguer le nom de l'équipe A, tiré de la table EQUIPE où on a fait la jointure sur n_equipe_a, du nom de l'équipe B, tiré de la table EQUIPE où on a fait la jointure sur n_equipe_b

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 134
    Par défaut
    Ah d'accord, merci.

    Et pour faire une requête qui afficherai :
    n_match | n_equipeA | nom_equipeA | n_equipeB | nom_equipeB

    Comment faut-il que je m'y prenne ? Il faudrait concaténer ces 2 requêtes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT MATCH.n_match, MATCH.n_equipeA, EQUIPE.nom_equipe
    FROM MATCH, EQUIPE
    WHERE MATCH.n_equipeA = EQUIPE.n_equipe
     
    SELECT MATCH.n_match, MATCH.n_equipeB, EQUIPE.nom_equipe
    FROM MATCH, EQUIPE
    WHERE MATCH.n_equipeB = EQUIPE.n_equipe

  6. #6
    rsc
    rsc est déconnecté
    Membre émérite
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Par défaut
    Mais non, à partir de la précédente requête, tu prends tout simplement les champs dans la table MATCH :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT MATCH.n_match,
    MATCH.n_equipe_a, A.nom_equipe AS EquipeA, 
    MATCH.n_equipe_b, B.nom_equipe AS EquipeB
    FROM MATCH
    JOIN EQUIPE A
    ON A.n_equipe = MATCH.n_equipe
    JOIN EQUIPE B
    ON B.n_equipe = MATCH.n_equipe
    Je remarque que j'avais fait une erreur dans ta précédente requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT A.nom_equipe AS EquipeA, B.nom_equipe AS EquipeB
    FROM MATCH
    JOIN EQUIPE A
    ON A.n_equipe = MATCH.n_equipe
    JOIN EQUIPE B
    ON B.n_equipe = MATCH.n_equipe
    Dis, je me trompe, ou tu débutes ? Si c'est le cas, va faire un tour dans Cours SQL (ci-dessus ), et plonge-toi par exemple dans "SQL de A à Z". Ca aide bien !

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

Discussions similaires

  1. [1.0.2][Zend_db_table] Gérer les liaisons entre les tables
    Par Baptiste Wicht dans le forum Zend_Db
    Réponses: 8
    Dernier message: 05/10/2007, 09h00
  2. Réponses: 5
    Dernier message: 25/04/2007, 11h34
  3. [cr 9] Problème sur un état, groupement et liaisons entre les tables
    Par Maltus dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 15/09/2006, 09h45
  4. Liaisons entre les tables.
    Par ox@na dans le forum Requêtes
    Réponses: 3
    Dernier message: 01/08/2006, 18h38
  5. liaison entre les tables
    Par celticval dans le forum Access
    Réponses: 19
    Dernier message: 05/04/2006, 16h49

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