views:

54

answers:

2

I am having trouble writing a query and I don't even know if it is possible. Take this table for example:

id   group  active  

1    A      NO  
2    A      YES  
3    A      NO  

4    B      YES  
5    B      NO  

6    C      NO  
7    C      NO  

Table above is just an example. In real table there are much more columns the those tree so have that in mind. What I need is a way to select only group names that don't have any active row. In this case both "A" and "B" groups have at least one row with "active" = "YES" but if you look at C there are no active rows. The only thing I would need as a result is a group column value (in this case "C") not entire row.

Is this possible?

+2  A: 
SELECT DISTINCT group FROM table WHERE group NOT IN
    (SELECT DISTINCT group FROM table WHERE active = 'YES')
danben
This worked fine. Thank you.
Srka
+1  A: 

You first want to get all the groups you wish to exclude, and then use the NOT IN clause to return all the other groups not in that list.

SELECT DISTINCT t.group 
FROM table t
WHERE t.group NOT IN 
    (SELECT DISTINCT t.group 
     FROM table t 
     WHERE t.active='YES');
Rich Adams
This is almost like the one danben posted so I suppose it'll work too.
Srka