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 :

Difficulté pour réaliser une requete peu complexe :/


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 181
    Points : 69
    Points
    69
    Par défaut Difficulté pour réaliser une requete peu complexe :/
    Tout d'abord bonjour ,

    Voila, je rencontre quelques difficultés concernant une jointure, je vous explique:

    Tables :

    intervenant : Contient l'ensemble des intervenants de mon appli
    login
    nom
    prenom,....

    cpte : Type de compte
    idcpte
    libelle : "Admin_sys", "admin_projet"....

    projet:
    idprojet
    libelle

    intervenant_cpte_projet : Liste l'ensemble des intervenants sur un projet et leur rôle respectif
    idprojet
    idcpte
    login

    Et je souhaite lister l'ensemble des administrateurs projets pour chacun des projets, sachant que certains projet ne disposent pas d'administrateur projet .

    Donc voici ma requete, qui m affiche seulement les projets disposant d'un admin projet..... :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT p.idprojet as 'id',p.libelle as 'libelle',i.login as 'login', i.nom as 'nom',i.prenom as 'prenom' FROM projet as p LEFT OUTER JOIN intervenant_role_projet as irp ON p.idprojet=irp.idprojet LEFT OUTER JOIN cpte as c ON irp.idcpte=c.idcpte LEFT OUTER JOIN intervenant as i ON irp.login=i.login WHERE c.libelle="ADMIN_PROJET" ORDER BY p.libelle,i.nom,i.prenom;
    Apparemment une de mes jointures n'est pas correcte mais je vois pas laquelle et ca fait une journée que je suis dessus

    Please help

    PS : Je tiens à remercier toutes ceux et celles qui m'aideront

  2. #2
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Salut,

    Pour ma part, j'essayerai le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT p.idprojet as 'id',p.libelle as 'libelle',i.login as 'login', i.nom as 'nom',i.prenom as 'prenom' 
    FROM (p INNER JOIN irp ON p.idprojet=irp.idprojet), ((irp  INNER JOIN c ON irp.idcpte=c.idcpte) INNER JOIN i ON irp.login=i.login) 
    WHERE c.libelle="ADMIN_PROJET" 
    ORDER BY p.libelle,i.nom,i.prenom;
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT p.idprojet as 'id',p.libelle as 'libelle',i.login as 'login', i.nom as 'nom',i.prenom as 'prenom' 
    (((FROM irp INNER JOIN p ON p.idprojet=irp.idprojet) irp  INNER JOIN c ON irp.idcpte=c.idcpte) INNER JOIN i ON irp.login=i.login) 
    WHERE c.libelle="ADMIN_PROJET" 
    ORDER BY p.libelle,i.nom,i.prenom;
    Voilà, je pense que cela devrait fonctionner !!!
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 181
    Points : 69
    Points
    69
    Par défaut
    Merci pour cette reponse extrement rapide

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 181
    Points : 69
    Points
    69
    Par défaut
    Arf malheureusement ca fonctionne pas car ca ne m affiche pas l'ensemble des projets dispo, de mon côté j'ai une requete qui marche mais qui n'est pas du tout optimiser car je recuperes l'ensemble des intervenants:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DISTINCT p.idprojet as 'id',p.libelle as 'libelle',IF(c.libelle='ADMIN_PROJET',i.login,'')as 'login' FROM projet as p LEFT OUTER JOIN intervenant_role_projet as irp ON p.idprojet=irp.idprojet LEFT OUTER JOIN intervenant as i ON irp.login=i.login LEFT OUTER JOIN compte as c ON irp.idrole=c.idcpte ORDER BY p.libelle;
    En faite le problème survient lorsque je cherche à mettre une clause restrictive :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DISTINCT p.idprojet as 'id',p.libelle as 'libelle',i.login as 'login' FROM projet as p LEFT OUTER JOIN intervenant_role_projet as irp ON p.idprojet=irp.idprojet LEFT OUTER JOIN intervenant as i ON irp.login=i.login LEFT OUTER JOIN compte as c ON irp.idrole=c.idcpte WHERE c.libelle='ADMIN_PROJET'  ORDER BY p.libelle;
    Merci par avance de votre aide

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 181
    Points : 69
    Points
    69
    Par défaut
    Personnne peut m'aider svp je commence a m'arracher les cheveux !!!



    Please help

  6. #6
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Salut,

    Avec le code suivant cela donne quoi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT DISTINCT p.idprojet AS 'id',p.libelle AS 'libelle',i.login AS 'login', c.libelle 
    FROM (((projet AS p LEFT OUTER JOIN intervenant_role_projet AS irp ON p.idprojet=irp.idprojet) LEFT OUTER JOIN intervenant AS i ON irp.login=i.login )LEFT OUTER JOIN compte AS c ON irp.idrole=c.idcpte) 
    WHERE c.libelle='ADMIN_PROJET' 
    ORDER BY p.libelle;
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 181
    Points : 69
    Points
    69
    Par défaut
    Citation Envoyé par zoom61
    Salut,

    Avec le code suivant cela donne quoi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT DISTINCT p.idprojet AS 'id',p.libelle AS 'libelle',i.login AS 'login', c.libelle 
    FROM (((projet AS p LEFT OUTER JOIN intervenant_role_projet AS irp ON p.idprojet=irp.idprojet) LEFT OUTER JOIN intervenant AS i ON irp.login=i.login )LEFT OUTER JOIN compte AS c ON irp.idrole=c.idcpte) 
    WHERE c.libelle='ADMIN_PROJET' 
    ORDER BY p.libelle;
    Désolé mais ca n'affiche toujours que les projets qui disposent d'un admin projet, mais merci de ton aid.
    Je commence à me demander si je ne vais pas faire plusieurs result à chaque fois si ca ne me fais pas perdre de temps au niveau de l'exécution pour le serveur d'appli et de bd?

    Je pense qu'on en est pas loin.

    Merci encore

  8. #8
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Et en rejoutant la condition suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT DISTINCT p.idprojet AS 'id',p.libelle AS 'libelle',i.login AS 'login', c.libelle 
    FROM (((projet AS p LEFT OUTER JOIN intervenant_role_projet AS irp ON p.idprojet=irp.idprojet) LEFT OUTER JOIN intervenant AS i ON irp.login=i.login )LEFT OUTER JOIN compte AS c ON irp.idrole=c.idcpte) 
    WHERE (c.libelle='ADMIN_PROJET' OR  c.libelle IS NULL)
    ORDER BY p.libelle;
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 181
    Points : 69
    Points
    69
    Par défaut
    Citation Envoyé par zoom61
    Et en rejoutant la condition suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT DISTINCT p.idprojet AS 'id',p.libelle AS 'libelle',i.login AS 'login', c.libelle 
    FROM (((projet AS p LEFT OUTER JOIN intervenant_role_projet AS irp ON p.idprojet=irp.idprojet) LEFT OUTER JOIN intervenant AS i ON irp.login=i.login )LEFT OUTER JOIN compte AS c ON irp.idrole=c.idcpte) 
    WHERE (c.libelle='ADMIN_PROJET' OR  c.libelle IS NULL)
    ORDER BY p.libelle;
    Merci pour ta reponse mais le problème c est que ca ne m'affiche pas les projets disposant d'utilisateur classique uniquement :/

    Je pense que je vais renoncer et utiliser une table temporaire ou je vais stocker l'ensemble des projets avec leur admin par le biais de multiple select. J espere que ce n est pas trop pénalisant sachant que c'est dans une procédure stockée

  10. #10
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Sinon tu fais une requête union, une requête qui contient les éléments commun et une autre qui ne contient pas d'utilisateur.
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

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

Discussions similaires

  1. Aide pour réaliser une requete complexe
    Par zaghi dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 11/10/2012, 11h51
  2. Requete SQL pour réaliser une SUM
    Par guigui69 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 14/03/2011, 18h31
  3. En difficulté pour faire une requete
    Par Fonzy17 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 21/03/2005, 10h56
  4. [TQuery]Réaliser une requete à partir d'une requete
    Par Eric SAULNIER dans le forum Bases de données
    Réponses: 2
    Dernier message: 09/07/2004, 12h00
  5. Créer une vue pour trier une requete UNION ?
    Par Etienne Bar dans le forum SQL
    Réponses: 3
    Dernier message: 03/01/2003, 20h22

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