Filtering resultsets based on GROUP_CONCAT() generated value

Filtering resultsets based on GROUP_CONCAT() generated value

am 28.04.2006 21:37:52 von phillip.s.powell

$if1 = "IF(s.student_ethnicity_interest_other IS NOT NULL AND
s.student_ethnicity_interest_other != '', " .
" CONCAT(s.student_ethnicity_interest_other, ', ',
GROUP_CONCAT(e.ethnicity_name ORDER BY upper(e.ethnicity_name))), " .
' GROUP_CONCAT(e.ethnicity_name ORDER BY
upper(e.ethnicity_name))' .
" ) AS ethnicity_name \n\n";

This segment of a larger SQL query produces a string that normally
looks like these:

caucasians

caucasians,african-americans

caucasians,african-americans,asian-americans

Nordic peoples,caucasians

"etc"

Here's the problem. Requirement states that we now need to filter the
results by "ethnicity", which is a one-to-many relationship per
applicant.

Let's say you have 20 applicants, and out of those, 1 of those has just
"caucasians" for ethnicity.

When you do the filter which I envision as:

WHERE ... AND ethnicity_name LIKE '%caucasians%'

Instead of having this value in the $result[$i]->ethnicity_name field
resultset value:

caucasians

You see this:

caucasians,caucasians,caucasians,caucasians,caucasians..[rep eated 7
times]

Take out the filter and it displays just fine.

I am not sure how much more info I can provide; the query itself is
about 200 lines long and is under U.S. Government regulated security
(illegal to post it, sorry), unfortunately this is all I can think of
that is allowable to post that illustrates the problem.

Should note there there is an "ethnicity" table with 7 rows in it with
unique ethnicity names like "caucasians", "african-americans", etc.,
and a field in the "applicant" table that is
"applicant_ethnicity_interest_other" where you can enter whatever
ethnicity you want on top of the selected ethnicities in the
"ethnicity" table - if that helps.

Thanx
Phil