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 :

Requete sélection, Jointure (coup de pouce needed)


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 15
    Points : 6
    Points
    6
    Par défaut Requete sélection, Jointure (coup de pouce needed)
    Slt à tous, voici mon problème :
    j'ai créé les tables suivantes sous mysql, dont voici la structure
    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
    25
    26
    27
    28
     
    CREATE TABLE `demande` (
      `NumDmd` int(6) NOT NULL auto_increment,
      `DateDepDmd` date NOT NULL default '0000-00-00',
      `DateSaisieDmd` date NOT NULL default '0000-00-00',
      `CodePoste` int(6) NOT NULL default '0',
      `NumDem` int(6) NOT NULL default '0',
      PRIMARY KEY  (`NumDmd`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=20 ;
     
    CREATE TABLE `demandeur` (
      `NumDem` int(6) NOT NULL auto_increment,
      `NomDem` varchar(25) NOT NULL default '',
      `PrenomDem` varchar(40) NOT NULL default '',
      `AdresseDem` varchar(50) NOT NULL default '',
      `TelephoneDem` int(18) NOT NULL default '0',
      `SexeDem` varchar(10) NOT NULL default '',
      `CodePays` char(2) NOT NULL default 'BJ',
      `DateNaissDem` date NOT NULL default '0000-00-00',
      PRIMARY KEY  (`NumDem`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=20 ;
     
    CREATE TABLE `poste` (
      `CodePoste` int(6) NOT NULL auto_increment,
      `LibellePoste` varchar(50) NOT NULL default '',
      `CodeProfil` char(3) NOT NULL default '0',
      PRIMARY KEY  (`CodePoste`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=25 ;
    Comme vous pouvez le constater, le champ CodePoste est commun aux tables demande & poste.
    Voilà, je voudrais, à partir d'une requête SQL, afficher le NumDem, NomDem, PrenomDem et le LibellePoste du demandeur.. Normalement ds la rekète on doit utiliser Inner Join, mais ça marche pas...
    Comment écrire la rekète?
    Moi j'ai écrit : SELECT NumDem, NomDem, poste.LibellePoste FROM demandeur, demande, poste WHERE demande.CodePoste = poste.CodePoste

    Merci d'avance..j'ai besoin de cette rekète pour continuer ma programmation

  2. #2
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    mais ça marche pas...
    ne nous aide pas beaucoup à comprendre le problème

    Sinon est-ce que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT NumDem, NomDem, poste.LibellePoste 
    FROM demandeur,  poste 
    WHERE demande.CodePoste = poste.CodePoste
    fonctionne comme tu l'attends ?
    Tu n'as pas besoin de la table Demande.

  3. #3
    Futur Membre du Club
    Inscrit en
    Juin 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Quand j'exécute ta rekète, ca m'affiche l'erreur :
    #1109 - Table inconnue 'demande' dans where clause

    Maintenant j'ai ré-écrit la requête de la manière suivante :

    SELECT DISTINCT demandeur.NumDem, demandeur.NomDem, PrenomDem, poste.LibellePoste
    FROM demandeur, poste, demande
    WHERE demande.CodePoste = poste.CodePoste

    Et voila la réponse que ça m'affiche :

    6 SAGBO Odilon Macro - Economiste
    7 DQSDQSDQSDQD Gfdgdfgd Macro - Economiste
    10 SAGBO Christel Macro - Economiste
    11 SAGBO Omer Macro - Economiste
    12 ABALO Edouard Macro - Economiste
    13 SOSSOU Pauline Macro - Economiste
    14 ALLE Inès Macro - Economiste
    15 ADIMI Oeudes Macro - Economiste
    16 LESANE Parish Crooks Macro - Economiste
    17 AFENI Shakur Macro - Economiste
    18 BOSSOU Arlette Macro - Economiste
    19 DOTOU SEGLA Jean Prince Macro - Economiste
    6 SAGBO Odilon Ingénieur Statisticien Economiste
    7 DQSDQSDQSDQD Gfdgdfgd Ingénieur Statisticien Economiste
    10 SAGBO Christel Ingénieur Statisticien Economiste
    11 SAGBO Omer Ingénieur Statisticien Economiste
    12 ABALO Edouard Ingénieur Statisticien Economiste
    13 SOSSOU Pauline Ingénieur Statisticien Economiste
    14 ALLE Inès Ingénieur Statisticien Economiste
    15 ADIMI Oeudes Ingénieur Statisticien Economiste
    16 LESANE Parish Crooks Ingénieur Statisticien Economiste
    17 AFENI Shakur Ingénieur Statisticien Economiste
    18 BOSSOU Arlette Ingénieur Statisticien Economiste
    19 DOTOU SEGLA Jean Prince Ingénieur Statisticien Economiste
    6 SAGBO Odilon Ingénieur des Travaux Statistiques
    7 DQSDQSDQSDQD Gfdgdfgd Ingénieur des Travaux Statistiques
    10 SAGBO Christel Ingénieur des Travaux Statistiques
    11 SAGBO Omer Ingénieur des Travaux Statistiques
    12 ABALO Edouard Ingénieur des Travaux Statistiques
    13 SOSSOU Pauline Ingénieur des Travaux Statistiques

    Remarque que ça m'affiche la meme personne plusieurs fois avec des postes différents, ce qui n'est pas normal..Pcq'un demandeur n'a qu'un seul poste..Alors je ne comprend pas pkoi j'obtiens une réponse pareille :
    Je me demande s'il ne faut pas procéder à une jointure des tables avec la syntaxe INNER JOIN..Si oui, comment l'écrire ?

  4. #4
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    J'ai lu trop vite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT a.NumDem, a.NomDem, b.LibellePoste 
    FROM demandeur a,  poste b, demande c
    WHERE a.NumDem = c.NumDem
      AND c.CodePoste = b.CodePoste

  5. #5
    Futur Membre du Club
    Inscrit en
    Juin 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    merci, ça marche
    N'oubliez pas le Resolu, lol

  6. #6
    Futur Membre du Club
    Inscrit en
    Juin 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Encore une petite aide siouplait :
    Dans la table demandeur, j'ai un champ qui renseigne sur la date de naissance..
    Je dispose d'une fonction php qui permet de calculer l'age actuelle d'une personne à partir de sa date de naissance.
    Ce que je veux, c'est, comment à partir de la requête précédente, afficher également l'age de la personne et non sa date de naissance

Discussions similaires

  1. Table resultant d'une requete sélection dans une jointure
    Par moabomotal dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 14/02/2007, 13h42
  2. requete de jointure
    Par linoar dans le forum Langage SQL
    Réponses: 5
    Dernier message: 17/05/2005, 15h55
  3. requete avec jointure & group by
    Par de LANFRANCHI dans le forum Langage SQL
    Réponses: 9
    Dernier message: 27/07/2004, 14h31
  4. requete AVG, jointure et fonction
    Par slim dans le forum Langage SQL
    Réponses: 11
    Dernier message: 01/04/2004, 01h45
  5. besoin d'un ptit coup de pouce
    Par mickyoun dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/03/2004, 11h58

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