2012-06-23 5 views
0

J'ai une table qui affecte des éléments aux groupes. Chaque élément peut exister dans de nombreux groupes et peut être attribué plusieurs fois au même groupeObtention d'éléments à partir de la table de liens

il ressemble:

element | group 
     1 | 1 
     1 | 2 
     1 | 3 
     2 | 1 
     2 | 3 
     3 | 2 

Je suis à la recherche d'une requête simple qui peut me renvoyer des éléments qui sont affectés au groupe 1, mais pas au groupe 2.

Selon les données présentées ci-dessus ce sera l'élément 2.

Répondre

2
select distinct element 
from your_table 
where element not in (select element 
         from your_table 
         where `group` = 2) 
and `group` = 1 
+0

cela fonctionne. Je vous remercie –

0
SELECT * 
FROM `table` t1 
LEFT OUTER JOIN `table` t2 
    ON t1.element = t2.element 
    AND t2.`group` = 2 
WHERE t1.`group` = 1 
    AND t2.`group` IS NULL 
0

Comme ça:

select element from table 
where group = 1 and not exists 
(select element from table t 
where t.element=table.element and t.group = 2) 
Questions connexes