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 MySQL Discussion :

Problème de requête avec 2 clé étrangère envoyé sur une seule table.


Sujet :

Requêtes MySQL

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 9
    Points : 9
    Points
    9
    Par défaut Problème de requête avec 2 clé étrangère envoyé sur une seule table.
    Bonjour tout le monde,

    J'ai un gros problème pour faire une requête MySql.

    J'ai une table tb_utilisateur (avec une clé primaire pk_uti) qui référence les clients et les techniciens de ma future application.

    D'un autre coté, j'ai une table tb_tache qui contiendra le nom du client ET le nom du technicien. Car une tâche est créer par un client et est attribué à un technicien.

    J'ai donc 2 clé étrangères (fk_pk_tec, fk_pk_cli) qui sont envoyés sur la table tâche.

    Je ne sais pas si c'est possible de faire de cette manière.

    J'aimerais connaître la requête qui me récupère ces deux champs.

    Merci d'avance

    @ +

  2. #2
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 4 147
    Points : 7 392
    Points
    7 392
    Billets dans le blog
    1
    Par défaut
    Il n'y a aucun problème à avoir plusieurs clé étrangères qui pointe sur la même table.

    En revanche, ton modèle implique qu'un même uti peut être à la fois client et technicien, puisque la clé étrangère est incapable de dire "where uti.type = 'client'" par exemple.

    Il faudra donc mettre en place un trigger pour gérer cette règle, et faire en sorte que dans la colonne "client" il n'y a que des clients, et dans la colonne "technicien" il n'y a que des techniciens.
    On ne jouit bien que de ce qu’on partage.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    Mais je ne sais pas comment récupérer les deux champs (client et technicien) en faisant une requête Select.

    J'ai bien essayé ça mais ça ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT pk_tac, username_uti, 
    							FROM tb_tache, tb_utilisateur
     
    							WHERE (pk_uti = fk_pk_cli
    							OR pk_uti = fk_pk_tec)
    le problème c'est que dans mon champ username_uti il me met le même nom de client et de technicien.

    Est-ce que tu sais comment récupérer les 2 champs.

  4. #4
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 4 147
    Points : 7 392
    Points
    7 392
    Billets dans le blog
    1
    Par défaut
    il faut appeler deux fois la table utilisateur, avec deux alias différents.
    ps : les jointures ne s'écrivent plus comme ça depuis... 20 ans !
    On ne jouit bien que de ce qu’on partage.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 9
    Points : 9
    Points
    9
    Par défaut Merci
    ça fonctionne merci...

    Et pour le type de jointure, j'avais un prof de la vieille école ;-)

    Il aurait fallut mettre des INNER JOIN ?

    Merci encore...

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Il aurait fallut mettre des INNER JOIN ?
    INNER ou OUTER mais oui !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

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

Discussions similaires

  1. Optimiser une requête sur une seule table
    Par LB dans le forum Langage SQL
    Réponses: 5
    Dernier message: 17/03/2015, 17h38
  2. Réponses: 3
    Dernier message: 11/07/2011, 11h29
  3. [AC-2002] Requête avec IIf et Dlast, champ sur une deuxième table
    Par mbuddy dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 03/06/2009, 04h33
  4. problème requete imbriqué sur une seule table
    Par vanhouten dans le forum Langage SQL
    Réponses: 7
    Dernier message: 30/01/2009, 16h35
  5. plusieurs COUNT sur une seule table avec conditions différentes
    Par dingoth dans le forum Administration
    Réponses: 9
    Dernier message: 20/12/2006, 10h13

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