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 :

Utulisation d'une table pour les jointure ( probleme )


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 38
    Points : 33
    Points
    33
    Par défaut Utulisation d'une table pour les jointure ( probleme )
    bonjour,
    je n'arrive pas a obtenir ce que je veut avec les jointures
    tout d'abord, voici mes trois tables
    ( table partage, la troisieme qui est utulisé pour les jointures nommé partage )
    1 table calend_cfg
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    CREATE TABLE `calend_cfg` (
      `calend_ID` int(11) NOT NULL auto_increment,
      `calend_lib` tinytext NOT NULL,
      `calend_debut` int(11) NOT NULL default '0',
      `calend_fin` int(11) NOT NULL default '0',
      `postit` char(1) NOT NULL default '',
      KEY `calend_ID` (`calend_ID`)
    ) TYPE=MyISAM AUTO_INCREMENT=18 ;
    1table membres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    CREATE TABLE `membres` (
      `ID` int(11) NOT NULL auto_increment,
      `nom` tinytext NOT NULL,
      `mail` tinytext NOT NULL,
      `admin` char(1) NOT NULL default '',
      `ajout_note_plan` char(1) NOT NULL default '',
      `pass` text NOT NULL,
      KEY `ID` (`ID`)
    ) TYPE=MyISAM PACK_KEYS=0 AUTO_INCREMENT=11 ;
    et une table Partage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    CREATE TABLE `calend_partage` (
      `ID` int(11) NOT NULL default '0',
      `calend_ID` int(11) NOT NULL default '0'
    ) TYPE=MyISAM;
    ce que je voudrais c'est obtenir

    stocké dans
    membres-----membres-------calend_cfg
    nom-----------ID--------------libelle
    toto-----------1----------------Agenda perso de toto
    toto-----------1----------------Evenements a venir
    etc...

    j'avais essayer cette requete ( qui ne me donne pas du tout le resultat voulu )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT  membres.ID,calend_cfg.calend_ID,nom,mail,admin,ajout_note_plan,calend_cfg.calend_lib  AS libelle 
    	FROM membres,calend_cfg
    	LEFT OUTER JOIN calend_partage
    	USING(calend_ID)
    voici un screenshot du resultat :

    merci de votre aide
    L'être humain, en général, dans la vie, réacte. On réacte, c'est à dire qu'on fait ce qu'on est supposé faire. Travailler, manger... J'm'excuse de l'expression; chier, mais je trouve qu'un être humain doit créer. JC Vandamme

  2. #2
    Membre confirmé Avatar de lper
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 396
    Points : 641
    Points
    641
    Par défaut
    Bonjour,
    le plus simple serait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT  membres.ID,calend_cfg.calend_ID,nom,mail,admin,ajout_note_plan,calend_cfg.calend_lib  AS libelle 
    FROM membres A,
             calend_partage B,
             calend_cfg C
    WHERE B.ID = A.ID and
               C.calend_ID = B.calend_ID
    La faiblesse humaine est d'avoir des curiosités d'apprendre ce qu'on ne voudrait pas savoir

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 38
    Points : 33
    Points
    33
    Par défaut
    bonjour Iper
    il me semble que c'est exatement ce que je veut ( je crois )
    donc je vais inserer d'autres enregistrement et testé si c'est la bonne requete mais tout a l'air en ordre
    merci

    edit:
    voic la requete actuelle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT membres.ID, calend_cfg.calend_ID, nom, mail, admin, ajout_note_plan, calend_cfg.calend_lib AS libelle
    FROM membres, calend_partage, calend_cfg
    WHERE calend_partage.ID = membres.ID AND calend_cfg.calend_ID = calend_partage.calend_ID
    L'être humain, en général, dans la vie, réacte. On réacte, c'est à dire qu'on fait ce qu'on est supposé faire. Travailler, manger... J'm'excuse de l'expression; chier, mais je trouve qu'un être humain doit créer. JC Vandamme

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 38
    Points : 33
    Points
    33
    Par défaut
    Je confirme ce que j'ai dit c'est tout a fait ce que je veut
    seulement maintenant Comment obtenir les membres ne possedant pas d'agenda ?
    je viens d'essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT  * 
    FROM  `membres` 
    WHERE ID NOT 
    IN ( 
    SELECT ID
    FROM partage )
    Seulement mysql me retourne :
    #1064 - Erreur de syntaxe près de 'SELECT ID
    FROM partage ) LIMIT 0, 30' à la ligne 5
    car si je pouvais faire cette requete ( en plus de la premiere )
    ce serait exactement ce que je veut
    L'être humain, en général, dans la vie, réacte. On réacte, c'est à dire qu'on fait ce qu'on est supposé faire. Travailler, manger... J'm'excuse de l'expression; chier, mais je trouve qu'un être humain doit créer. JC Vandamme

  5. #5
    Membre confirmé Avatar de lper
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 396
    Points : 641
    Points
    641
    Par défaut
    Ok, tu peux tout avoir en utilisant LEFT OUTER JOIN dans ce cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT  membres.ID,calend_cfg.calend_ID,nom,mail,admin,ajout_note_plan,calend_cfg.calend_lib  AS libelle 
    FROM membres A
    LEFT OUTER JOIN calend_partage B
    on B.ID = A.ID,
    LEFT OUTER JOIN calend_cfg C 
    on C.calend_ID = B.calend_ID
    Syntaxe à vérifier.
    La faiblesse humaine est d'avoir des curiosités d'apprendre ce qu'on ne voudrait pas savoir

  6. #6
    Membre confirmé Avatar de lper
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 396
    Points : 641
    Points
    641
    Par défaut
    En mysql, ca serait plûtôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT  membres.ID,calend_cfg.calend_ID,nom,mail,admin,ajout_note_plan,calend_cfg.calend_lib  AS libelle 
    FROM membres A 
    LEFT OUTER JOIN calend_partage B 
    using (ID), 
    LEFT OUTER JOIN calend_cfg C 
     using (calend_ID)
    La faiblesse humaine est d'avoir des curiosités d'apprendre ce qu'on ne voudrait pas savoir

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 38
    Points : 33
    Points
    33
    Par défaut
    desolé de ne pas avoir repondu plus vite mais je teste avant de dire oui c'est ça
    et en fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT membres.ID, calend_cfg.calend_ID, nom, mail, admin, ajout_note_plan, calend_cfg.calend_lib AS libelle
    FROM membres
    LEFT  OUTER  JOIN calend_partage
    USING ( ID ) , 
    LEFT  OUTER  JOIN calend_cfg
    USING ( calend_ID )
    ne fonctionne pas :

    #1064 - Erreur de syntaxe près de 'LEFT OUTER JOIN calend_cfg
    USING ( calend_ID ) LIMIT 0, 30' à la ligne 5

    ( je suppose que tu m'a simplement donné la requete type pour que je l'adapte ? mais je n'y arrive pas )
    L'être humain, en général, dans la vie, réacte. On réacte, c'est à dire qu'on fait ce qu'on est supposé faire. Travailler, manger... J'm'excuse de l'expression; chier, mais je trouve qu'un être humain doit créer. JC Vandamme

  8. #8
    Membre confirmé Avatar de lper
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 396
    Points : 641
    Points
    641
    Par défaut
    Désolé, je connais pas trop mysql , peut être devrais tu poster dans le forum adéquat.
    (la vrigule est peut être de trop entre les deux joins : )
    La faiblesse humaine est d'avoir des curiosités d'apprendre ce qu'on ne voudrait pas savoir

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 38
    Points : 33
    Points
    33
    Par défaut
    Désolé, je connais pas trop mysql , peut être devrais tu poster dans le forum adéquat.
    (la vrigule est peut être de trop entre les deux joins )
    Suffisait d'y penser, en effet c'etait la virgule
    merci
    L'être humain, en général, dans la vie, réacte. On réacte, c'est à dire qu'on fait ce qu'on est supposé faire. Travailler, manger... J'm'excuse de l'expression; chier, mais je trouve qu'un être humain doit créer. JC Vandamme

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

Discussions similaires

  1. Réponses: 15
    Dernier message: 17/03/2015, 22h42
  2. Récupérer des noms de fichier dans une table pour les placer en masque du tfilelist
    Par charliplanete dans le forum Développement de jobs
    Réponses: 11
    Dernier message: 24/08/2011, 17h16
  3. Réponses: 4
    Dernier message: 22/05/2007, 14h42
  4. Réponses: 3
    Dernier message: 11/04/2007, 14h01
  5. Réponses: 1
    Dernier message: 26/01/2007, 08h15

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