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 sur 2 tables


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Requete sur 2 tables
    Bonjour a tous

    J'ai deux tables : role(roleId,name), roleAssignment(profileId,roleId)
    avec les données suivantes :

    role : 1 consulter
    2 attacher

    roleAssignment : 1 1
    2 1
    2 2

    Je souhaite connaitre tous les profilId qui sont en relation avec les roleId 1 et 2.
    La requete doit me retourné le profildId 2 (mais pas le 1)

    Je ne vois pas du tout comment faire

    Pouvez vous m'aider ?

    Merci

  2. #2
    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 : 41
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 644
    Points
    4 644
    Par défaut
    salut

    essaie ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select ProfileId from RoleAssignement 
    where RoleId in (1,2) 
    group by RoleID
    having count(RoleId)=2

  3. #3
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     SELECT     r1.profileid
     FROM       roleAssignment r1
     INNER JOIN roleAssignment r2
     ON r1.profileid = r2.profileid
     WHERE      r1.roleid = 1
     AND        r2.roleid = 2;

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    il me renvoi l'inverse c'est-à-dire le profilId 1 pour la 1ere réponse

    Pour la seconde réponse cela fonctionne, mais en fait ma requete est un peu plus compliquer car en realite je fait d'abord une requete sur les nom de la table role.

    Je m'explique : je fait une requete du style :
    select roleId
    from role
    where name like "%cons%"
    or name like "%att%"

    et une fois que j'ai les roleId je veux effectuer la requete cite dans mon 1er message, j'aimerai pouvoir le faire en une seule requete

  5. #5
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT		a1.profileId
    FROM       	roleAssignment a1
    INNER JOIN 	roleAssignment a2
    ON 		a1.profileId = a2.profileId
    INNER JOIN 	role r1
    ON		r1.roleId = a1.roleId
    AND		r1.name LIKE "%cons%" 
    INNER JOIN 	role r2
    ON		r2.roleId = a2.roleId
    AND		r2.name LIKE "%att%";

  6. #6
    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
    La solution de Cybher convient parfaitement, avec une petite correction et un léger ajout :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select ProfileId 
    from RoleAssignement a inner join role r
                                   on a.RoleId = r.RoleId
    where r.name like '%cons%'
       or r.name like '%att%'
    group by ProfileId
    having count(a.RoleId) = 2
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

Discussions similaires

  1. besoin d'aide -> requete sur 2 tables avec count()
    Par parksto dans le forum Requêtes
    Réponses: 3
    Dernier message: 20/10/2005, 19h06
  2. requete sur 2 tables mysql
    Par PAYASS59 dans le forum Requêtes
    Réponses: 3
    Dernier message: 19/09/2005, 11h48
  3. Pb requete sur 2 tables
    Par panini182 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 09/08/2005, 17h26
  4. Requete sur deux tables
    Par ReaseT dans le forum ASP
    Réponses: 13
    Dernier message: 07/02/2005, 16h18
  5. [MS-SQL]requete sur 3 tables
    Par pascalT dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 30/04/2003, 11h24

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