Will Tomlinson wrote:
> Hey,
> 
> I've got groups that can have one or more types associated with them. I have 
> a linking table that I'm querying and filtering. But I'm not getting the 
> results I need. 
> 
> Example: A group can be both 'College' and 'Jewish', as listed in the many 
> linking table - tblgrouptypes_x.grouptype
> 
> In my query below, I'm looking for groups that are both 'College' and 
> 'Jewish', but getting no results. Even though I know there is one in there. 
> Seems simple enough. 
> 
> SELECT tblgroups.groupid, tblgroups.groupimage, tblgroups.groupname, 
> tblgroups.groupcity, tblgroups.state, tblgroups.voicingid, 
> tblgroups.groupcontactperson, tblgroups.country, tblgroups.region, 
> tblgrouptypes_x.groupid, tblgrouptypes_x.grouptype, tblgrouptypes.grouptype
> FROM tblgroups, tblgrouptypes, tblgrouptypes_x
> WHERE tblgroups.groupid = tblgrouptypes_x.groupid
> AND tblgrouptypes_x.grouptype = tblgrouptypes.grouptype
> AND (tblgrouptypes_x.grouptype = 'College'
> AND tblgrouptypes_x.grouptype = 'Jewish')
> ORDER BY tblgroups.groupsortname
> 
> And ideas would be appreciated.
> 
> Thanks,
> Will 

A problem with your query is that you SELECT the 'grouptype' column.
This column cannot show both 'College' and 'Jewish' at the same time.

One solution is to return two rows for the single record in tblgroups that you 
want.
One row will have 'College' and the second row will have 'Jewish':
---------------------------------
SELECT G.groupid, G.groupimage, G.groupname, G.groupcity, G.state,
        G.voicingid, G.groupcontactperson, G.country, G.region,
        X.groupid, X.grouptype, T.grouptype
FROM tblgroups G, tblgrouptypes T, tblgrouptypes_x X
WHERE G.groupid = X.groupid
     AND X.grouptype = T.grouptype
     AND EXISTS ( SELECT 1 FROM tblgrouptypes_x Z
                  WHERE G.groupid = Z.groupid
                  AND Z.grouptype = 'College'
                 )
     AND EXISTS ( SELECT 1 FROM tblgrouptypes_x Z
                  WHERE G.groupid = Z.groupid
                  AND Z.grouptype = 'Jewish'
                 )
ORDER BY G.groupsortname
---------------------------------

Another solution is to not SELECT the 'grouptype' column(s).
This query will only return one row from tblgroups, containing only columns 
from tblgroups:

---------------------------------
SELECT G.groupid, G.groupimage, G.groupname, G.groupcity, G.state,
        G.voicingid, G.groupcontactperson, G.country, G.region
FROM tblgroups G
WHERE G.groupid IN
(   SELECT DISTINCT D.groupid
     FROM tblgroups D, tblgrouptypes_x X
     WHERE D.groupid = X.groupid
         AND EXISTS ( SELECT 1 FROM tblgrouptypes_x Z
                      WHERE D.groupid = Z.groupid
                      AND Z.grouptype = 'College'
                    )
         AND EXISTS ( SELECT 1 FROM tblgrouptypes_x Z
                      WHERE D.groupid = Z.groupid
                      AND Z.grouptype = 'Jewish'
                    )
)
ORDER BY G.groupsortname
---------------------------------

You don't mention your database.  Both these SQL statements work on SQLServer 
and MySQL, but you may 
need to adjust them a bit if you use something else.

Hope this helps.

-tom-

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to 
date
Get the Free Trial
http://ad.doubleclick.net/clk;160198600;22374440;w

Archive: 
http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:300477
Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm
Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4

Reply via email to