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 :

Equivalent de INTERSECT en MySQL


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 18
    Par défaut Equivalent de INTERSECT en MySQL
    Bonjour,

    J'aimerais faire une requête avec l'équivalent d'un INTERSECT, voici un bout de ma BDD sur lequel je dois travailler:



    J'aimerais lister les utilisateurs qui connaissent un produit A et un produit B, ce qui avec un intersect ressemblerais à:

    SELECT distinct Collaborateur.ID_COL, Collaborateur.NOM, Collaborateur.Prenom FROM competences, collab_comp, Collaborateur WHERE (Collaborateur.ID_COL= Collaborateur_comp.ID_COL AND collab_comp.ID_COMP=competences.ID_COMP AND competences.produits = 'PRODUIT_A')
    INTERSECT
    SELECT distinct Collaborateur.ID_COL, Collaborateur.NOM, Collaborateur.Prenom FROM competences, collab_comp, collab WHERE (Collaborateur.ID_COL= Collaborateur_comp.ID_COL AND collab_comp.ID_COMP=competences.ID_COMP AND competences.produits = 'PRODUIT_B')
    Si vous avez une idée pour avoir l'équivalent en Mysql, je vous en remercie d'avance

  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 : 42
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Par défaut
    salut,

    peut etre ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT distinct Collaborateur.ID_COL, Collaborateur.NOM, Collaborateur.Prenom 
    FROM competences, collab_comp, Collaborateur 
    WHERE (Collaborateur.ID_COL= Collaborateur_comp.ID_COL 
    AND collab_comp.ID_COMP=competences.ID_COMP 
    AND (competences.produits ='PRODUIT_A' OR  competences.produits ='PRODUIT_B')

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 18
    Par défaut
    Effectivement ça fonctionne, mais ça me donne l'équivalent d'un UNION pas d'un INTERSECT.

    Je voudrais sortir les résultats de la figure 2:


  4. #4
    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 : 42
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Par défaut
    oui desolé, la fatigue du week-end..

    essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT Collaborateur.ID_COL, Collaborateur.NOM, Collaborateur.Prenom 
    FROM competences, collab_comp, Collaborateur 
    WHERE (Collaborateur.ID_COL= Collaborateur_comp.ID_COL 
    AND collab_comp.ID_COMP=competences.ID_COMP 
    AND (competences.produits ='PRODUIT_A' OR  competences.produits ='PRODUIT_B')
    GROUP BY Collaborateur.ID_COL, Collaborateur.NOM, Collaborateur.Prenom
    having count(DISTTINCT(competences.produits))=2

  5. #5
    Membre Expert
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Par défaut
    Méthode bis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT col.ID_COL, col.NOM, col.Prenom 
    FROM Collaborateur col JOIN collab_comp cc1   ON col.ID_COL=cc1.ID_COL
                           JOIN competences comp1 ON cc1.ID_COMP=comp1.ID_COMP AND comp1.produits='PRODUIT_A'
                           JOIN collab_comp cc2   ON col.ID_COL=cc2.ID_COL
                           JOIN competences comp2 ON cc2.ID_COMP=comp2.ID_COMP AND comp2.produits='PRODUIT_B'

Discussions similaires

  1. equivalent d'intersection et de moins dans mysql
    Par ka123tn dans le forum Requêtes
    Réponses: 3
    Dernier message: 01/04/2009, 16h27
  2. Problèmes avec INTERSECT sur MYSQL
    Par zarbydigital dans le forum Requêtes
    Réponses: 1
    Dernier message: 27/09/2005, 13h18
  3. L'equivalent de "show columns"(MYSQL) en SQL Serve
    Par robluce dans le forum Langage SQL
    Réponses: 2
    Dernier message: 20/10/2004, 09h36
  4. Equivalent d'INTERVAL de Mysql
    Par Yann21 dans le forum Requêtes
    Réponses: 3
    Dernier message: 16/12/2003, 14h04
  5. Equivalent des SHOW de MySQL
    Par YanK dans le forum Requêtes
    Réponses: 2
    Dernier message: 08/10/2003, 09h15

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