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 :

Requête sur quatre tables


Sujet :

MySQL

  1. #1
    Membre confirmé
    Profil pro
    Recette MOE/MOA
    Inscrit en
    Mai 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Recette MOE/MOA

    Informations forums :
    Inscription : Mai 2009
    Messages : 60
    Par défaut Requête sur quatre tables
    Bonjour,

    Pour un projet personnel, j'ai quatre tables : Projet, Lot, Collaborateur et Travaille telles que :
    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
    21
    22
    23
    24
    --
    -- Structure de la table `tprojet`
    --
     
    CREATE TABLE IF NOT EXISTS `tprojet` (
      `Id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Identifiant du projet',
      `Nom` varchar(40) NOT NULL COMMENT 'Nom du projet',
      `IdClient` int(11) NOT NULL COMMENT 'Identifiant du client ayant command? le projet',
      `IdRespProjet` int(11) NOT NULL COMMENT 'Identifiant du responsable du projet',
      PRIMARY KEY (`Id`),
      KEY `IdClient` (`IdClient`),
      KEY `IdRespProjet` (`IdRespProjet`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
     
    --
    -- Contraintes pour les tables exportées
    --
     
    --
    -- Contraintes pour la table `tprojet`
    --
    ALTER TABLE `tprojet`
      ADD CONSTRAINT `tprojet_ibfk_1` FOREIGN KEY (`IdClient`) REFERENCES `tclient` (`Id`),
      ADD CONSTRAINT `tprojet_ibfk_2` FOREIGN KEY (`IdRespProjet`) REFERENCES `tcollaborateur` (`Id`);
    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
    21
    --
    -- Structure de la table `tlot`
    --
     
    CREATE TABLE IF NOT EXISTS `tlot` (
      `Id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Identifiant du lot',
      `Nom` varchar(40) NOT NULL COMMENT 'Nom du lot',
      `IdProjet` int(11) NOT NULL COMMENT 'Lot du projet n',
      PRIMARY KEY (`Id`),
      KEY `IdProjet` (`IdProjet`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=12 ;
     
    --
    -- Contraintes pour les tables exportées
    --
     
    --
    -- Contraintes pour la table `tlot`
    --
    ALTER TABLE `tlot`
      ADD CONSTRAINT `tlot_ibfk_1` FOREIGN KEY (`IdProjet`) REFERENCES `tprojet` (`Id`);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    --
    -- Structure de la table `tcollaborateur`
    --
     
    CREATE TABLE IF NOT EXISTS `tcollaborateur` (
      `Id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Identifiant du collaborateur',
      `Nom` varchar(40) NOT NULL COMMENT 'Nom du collaborateur',
      PRIMARY KEY (`Id`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;
    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
    21
    22
    23
    --
    -- Structure de la table `ttravaille`
    --
     
    CREATE TABLE IF NOT EXISTS `ttravaille` (
      `Id` int(11) NOT NULL AUTO_INCREMENT,
      `IdLot` int(11) NOT NULL COMMENT 'Num?ro du lot',
      `IdCol` int(11) NOT NULL COMMENT 'Identifiant du collaborateur',
      PRIMARY KEY (`Id`),
      KEY `IdLot` (`IdLot`),
      KEY `IdCol` (`IdCol`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;
     
    --
    -- Contraintes pour les tables exportées
    --
     
    --
    -- Contraintes pour la table `ttravaille`
    --
    ALTER TABLE `ttravaille`
      ADD CONSTRAINT `ttravaille_ibfk_1` FOREIGN KEY (`IdLot`) REFERENCES `tlot` (`Id`),
      ADD CONSTRAINT `ttravaille_ibfk_2` FOREIGN KEY (`IdCol`) REFERENCES `tcollaborateur` (`Id`);
    Et je souhaiterais pouvoir sortir, à partir d'un collaborateur donné, tous les lots sur lesquels il travaille.
    Comment puis-je faire ?
    Merci beaucoup d'avance.

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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 818
    Billets dans le blog
    14
    Par défaut
    Puisque tu dis "requête sur 4 tables", je suppose que tu ne veux pas seulement le nom du lot mais aussi le nom du projet ?

    Ce que tu demandes n'est pas très difficile et la structure de tes tables est satisfaisante, avec même des clés étrangères. Il suffit de faire des jointures entre les quatre tables.

    Qu'as-tu essayé comme requête ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    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 !

  3. #3
    Membre confirmé
    Profil pro
    Recette MOE/MOA
    Inscrit en
    Mai 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Recette MOE/MOA

    Informations forums :
    Inscription : Mai 2009
    Messages : 60
    Par défaut
    J'ai cette requête qui m'affiche tout :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT * FROM `tcollaborateur`, `ttravaille`, `tlot` 
    WHERE `tcollaborateur`.`id` = `ttravaille`.`idCol`;
    Et là, j'ai un gros trou. Comment sélectionner mon collaborateur parmi les résultats.

  4. #4
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Par défaut
    salut,

    as tu regardé le lien de Cinephil?

    cela va donner quelque chose dans ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT * FROM `tcollaborateur`, 
    JOIN`ttravaille` ON `tcollaborateur`.`id` = `ttravaille`.`idCol`
    JOIN`tlot` ON .... 
    WHERE `tcollaborateur`.`nom`= ....;

  5. #5
    Membre confirmé
    Profil pro
    Recette MOE/MOA
    Inscrit en
    Mai 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Recette MOE/MOA

    Informations forums :
    Inscription : Mai 2009
    Messages : 60
    Par défaut
    En effet, c'est bien une requête du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT * FROM `tcollaborateur`
    JOIN `ttravaille` ON `tcollaborateur`.`id` = `ttravaille`.`idCol`
    JOIN `tlot` ON `tlot`.`id` = `ttravaille`.`idLot`
    JOIN `tprojet` ON `tprojet`.`id` = `tlot`.`idProjet`
    WHERE `tcollaborateur`.`id` =un chiffre quelconque
    Comme quoi, la sinusite n'aide pas à la réflexion. Merci de vos pistes.

Discussions similaires

  1. [TSQL]requête sur quatre tables
    Par nicoyac dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 09/02/2007, 18h33
  2. Problème de requêtes sur deux tables
    Par Pymm dans le forum Access
    Réponses: 6
    Dernier message: 06/09/2005, 10h06
  3. Requête sur plusieurs tables
    Par drinkmilk dans le forum Langage SQL
    Réponses: 8
    Dernier message: 11/07/2005, 13h25
  4. Requête sur 2 tables ?
    Par kibodio dans le forum Langage SQL
    Réponses: 3
    Dernier message: 30/03/2005, 16h57
  5. Requête sur 2 tables et surtout novice...
    Par kibodio dans le forum Langage SQL
    Réponses: 13
    Dernier message: 03/03/2005, 16h45

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