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 :

requete sur plusieurs tables


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2005
    Messages
    231
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 231
    Points : 73
    Points
    73
    Par défaut requete sur plusieurs tables
    Bonjour à tous, j'utilise Mysql 4.0 et j'ai un petit problème de requete,

    voilà d'abord mes deux tables,

    la première c'est la table 'actions'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TABLE `actions` (
     `ID_ACTION` int(11) NOT NULL auto_increment,
     `ID_DEMANDEUR` int(11) NOT NULL default '0',
     `ID_RESPONSABLE` int(11) NOT NULL default '3',
     `TITRE_ACTION` varchar(250) NOT NULL default '',
       PRIMARY KEY  (`ID_ACTION`),
    ) TYPE=MyISAM AUTO_INCREMENT=7 ;
     
    INSERT INTO `actions` VALUES (1, 1, 2, 'Action demandée par Jean');INSERT INTO `actions` VALUES (2, 2, 1, 'Action demandée par Pierre');
    elle contient l' action TITRE_ACTION , que le demandeur ID_DEMANDEUR veut que le responsable ID_RESPONSABLE fasse.

    la deuxième table est la table 'responsable'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    CREATE TABLE `responsable` (
     `ID_RESPONSABLE` int(11) NOT NULL auto_increment,
     `NOM_RESPONSABLE` varchar(100) NOT NULL default '',
      PRIMARY KEY  (`ID_RESPONSABLE`),
    ) TYPE=MyISAM AUTO_INCREMENT=9 ;
    INSERT INTO `responsable` VALUES (1, 'Jean');
    INSERT INTO `responsable` VALUES (2, 'Pierre');
    Je veux afficher l'action que Jean a demandé à Pierre, avec le nom de Pierre affiché comme Responsable et le nom de Jean affiché comme Demandeur c'est-à-dire une table de la forme:
    Liste des Actions - Nom du demandeur - Nom du responsable
    Action demandée par Jean- Jean - Pierre


    Et je ne sais pas comment faire.

  2. #2
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Bonjour,

    Regarde du côté des jointures, plusieurs tutoriels les décrivent en détail (http://sqlpro.developpez.com/cours/sqlaz/jointures/, http://cyberzoide.developpez.com/php4/mysql/ ...)
    Pensez au bouton

  3. #3
    Membre régulier
    Inscrit en
    Janvier 2005
    Messages
    231
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 231
    Points : 73
    Points
    73
    Par défaut
    j'ai regardé mais je ne vois pas ce qui correspond vraiment à mon cas, est-ce que tu peux pour cette fois me montrer comment faire?

  4. #4
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut Re: requete sur plusieurs tables
    Salut manaboko,

    Tout d'abord, vue que tu as un auto_increment sur tes clef, ça ne sert à rien de spécifier la clef, ça se fait tout seul (c'est d'ailleurs le principe de l'auto_increment). On a déjà suffisamment évoqué le sujet dans ce forum (une petite recherche et tu devrais trouver comment faire).

    Aussi, le nom de ta table "responsable" est assez mal choisi. Je l'aurais appelée "personne".

    Maintenant, comme il faut bien commencer un jour, je te donne la requête que tu dois faire, pour que tu vois comment faire une jointure:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT
      actions.TITRE_ACTION AS "Action", 
      demandeur.NOM_RESPONSABLE AS "Nom du demandeur",
      resp.NOM_RESPONSABLE AS "Nom du responsable"
     
    FROM actions
     
    INNER JOIN responsable AS demandeur
    ON (actions.ID_DEMANDEUR = demandeur.ID_RESPONSABLE)
     
    INNER JOIN responsable AS resp
    ON (actions.ID_RESPONSABLE = resp.ID_RESPONSABLE)
    Pour le reste, cherche dans des livres, des tutoriels ou même sur ce forum pour connaitre la différence entre les différentes jointures (INNER, LEFT OUTER, etc.)
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  5. #5
    Membre régulier
    Inscrit en
    Janvier 2005
    Messages
    231
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 231
    Points : 73
    Points
    73
    Par défaut
    merci ça marche, mais comment faire alors si c'est l'inverse que je veux afficher , puisque sur cette requete, il n'y a rien qui spécifie que c'est Jean qui a demandé l'action.
    Liste des Actions - Nom du demandeur - Nom du responsable
    Action demandée par Pierre- Pierre - Jean

    J'ai essayé de comprendre la requete mais je n'arrive pas à dire comment c'est la demande de Jean qui est affichée et non celle de Pierre.
    Merci beaucoup.

  6. #6
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    En principe, ça devrait t'afficher:

    Liste des Actions - Nom du demandeur - Nom du responsable
    Action demandée par Jean - Jean - Pierre
    Action demandée par Pierre - Pierre - Jean

    Qu'est-ce qu'il y a que tu ne comprends pas?
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  7. #7
    Membre régulier
    Inscrit en
    Janvier 2005
    Messages
    231
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 231
    Points : 73
    Points
    73
    Par défaut
    ah excuses moi, chez moi il y avait un problème et c'était seulement la demande de Jean qui était affichée.

    Milles excuses et encore merci

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

Discussions similaires

  1. [SQL] SQL Requete sur plusieurs tables/traitement particulier
    Par fluojet dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 12/02/2007, 19h59
  2. Requete sur plusieurs tables
    Par lampre dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 09/02/2007, 17h26
  3. Réponses: 1
    Dernier message: 06/12/2006, 18h25
  4. Probleme de requete sur plusieurs tables
    Par Hitmaaan dans le forum Requêtes
    Réponses: 3
    Dernier message: 20/08/2006, 22h20
  5. [vb6]faire une requete sur plusieurs tables
    Par Henry9 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 23/07/2006, 02h06

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