Sorry for the late response...

I didn't understand the whole situation from the first
message or 2 -- and have been sort of in and out a lot
lately...

If you could create a separate table to hold just the bird
names -- or a separate query in cf you could still use sql
to get it all with a single query using an inner join...

<cfquery ...>
select birds.birdname as parent_answer,
  survey.answer, count(survey.answer)
from birds, survey
where ',' || survey.parent_answer || ','
  like '%,' || birds.birdname ',%'
group by birds.birdname, survey.answer
order by birds.birdname, survey.answer
</cfquery>

You may need to use a sub-query instead of the like in the
where clause... I can't remember off the top of my head how
that subquery is phrased, but I'm pretty sure I've done it
before in sql server if not oracle, so I suspect it can also
be done either in oracle or cf...

s. isaac dealey                972-490-6624

team macromedia volunteer
http://www.macromedia.com/go/team

chief architect, tapestry cms  http://products.turnkey.to

onTap is open source           http://www.turnkey.to/ontap



>>> Meaning you have a single entry with a list of parent
>>> answers in one
>>> column? ...

> Yes...

> Sorry Isaac, I know it's not normalised, believe me, I've
> sat down with
> the DBA's over this problem and this solution is the best
> of a bad bunch
> in terms of method... it's a long and complicated story
> that I can't go
> into right now, but I have to work with what I have....
> it's not big,
> not pretty but all I got :-(

> This is the end result of a whole heap of custom
> questionnaire's that a
> user can build any way they want using the standard HTML
> form controls
> (ie a form editor)... we're trying to cater for everyone
> and every type
> of form that can be built and provide reporting tools....
> it was all
> going fine until the realisation of checkbox's being able
> to contain
> multiple values and the introduction of the concept of a
> parent answer
> into the pot....

>>> Assuming of course that the parent_answer and answer
>>> columns contain
>>> only the bit of information you're
>>> trying to get at and not a list of different bits, and
>>> the QofQ
> follows normal SQL rules, which it's supposed to.

> The column contains a list of values and I can't change it
> now :-(

> Psudeo logic for what I am doing here (and it is pretty
> horrendous
> now)...

> 1. For each question
> 2. Query the database table for the relevant answers
> (which can be at a
> module, course, school, faculty OR uni level, hence the
> massive reports)
> 3. Using QoQ, get all the distinct parentAnswers 4. If no
> parentAnswers,
> Skip to step 7

> 5. If parentAnswers, for each distinct parentAnswer (I get
> the distinct
> parentAnswer list by passing in the distinct parentAnswer
> Query into a
> UDF)
> 6. Use QoQ to get all the answers that had a parentAnswer
> containing
> this particular distinct parentAnswer

> 7. Do count of the actual Answers (as opposed to
> parentAnswer)
> 8. Display

> On reflection, we would probably do lots of it different
> ways and the
> reporting side I would be looking to go down the route you
> have
> suggested... but time, resources, the voices from above...
> I'm sure
> you've been there ;-)

> Isaac, cheers for your time, I really do appreciate it but
> I am now
> halfway built on a method as time is now short.....

> cheers

> DC

> -----Original Message-----
> From: S. Isaac Dealey [mailto:[EMAIL PROTECTED]
> Sent: 03 September 2003 14:21
> To: CF-Talk
> Subject: RE: SQL or CF Code help with extracting distinct
> values from a
> list


>> Isaac,

>> Don't worry about it but I thought I would answer your
>> post since it
>> would be impolite not too :-)

>> The parentAnswer is a list of values, I need to be able
>> to group per
>> distinct value in that parentAnswer list for all the
>> responses for
>> that question.
>> I am retrieving all the answers for a particular question
>> in a query and
>> then using QoQ to break it down further so full on SQL is
>> just not
>> possible...

>> ie if I have the following answers which have been
>> queried from a
>> single table (columns missed out to keep it readable)

>> PARENT_ANSWER_LIST           RESAREA_VALUE
>> Sparrows,Bluetit,Crow                        Well
>> Sparrows,Pigeons,Robins,Bluetit,Crow         Very Well
>> Sparrows,Pigeons,Bluetit             Well

>> I need it to come back with the following as an answer...

>> BIRD         VALUE           COUNT
>> Sparrow              Well            2
>> Sparrow              Very Well       1
>> Bluetit              Well            2
>> Bluetit              Very Well       1
>> Crow         Well            1
>> Crow         Very Well       1
>> Pigeons              Well            1
>> Pigeons              Very Well       1

>> The way I am looking at your query (and I have tried
>> something
>> similar) is that where the parentAnswer is
>> 'Sparrows,Bluetit,Crow'....

>> your query will count the 'Sparrows,Bluetit,Crow" as a
>> distinct answer

>> and will not split it up into its list values.

> Meaning you have a single entry with a list of parent
> answers in one column? ...

> That's _not_ normalized. It might actually be rather well
> to consider
> the possibility of reverse-engineering normalization on
> that table --
> create an alternate table(s) and use a cursor to go
> through the table
> line by line, then use the new table(s) from then on.
> Proper
> normalization would require something like this:

> tbl_Birds ( birdid, birdname )
> tbl_SurveyAnswers ( answerid, answer )
> tbl_BirdSurvey ( memberid, birdid, answerid )

> If that's not more or less the way your tables are set up,
> then it's no surprise trying to get the info you want
> brings the db
> server to a crashing halt. They're not designed to handle
> lists in
> columns...

>> Your query would return....

>> PARENT ANSWER                        COUNT
>> Sparrows,Bluetit,Crow                        1
>> Sparrows,Pigeons,Robins,Bluetit,Crow         1
>> Sparrows,Pigeons,Bluetit             1

>> Does that make sense?

> When you specify "group by parent_answer, answer" it's
> going
> to get a distinct cross-section of your parent_answer and
> answer values
> in the order parent_answer, answer, and then the aggregate
> count()
> column will count the number of entries with both that
> parent_answer
> value _and_ that answer value, so the results will be

> sparrow, love 2
> sparrow, hate 1
> pigeon, hate 9
> crow, love 1

> etc...

> Assuming of course that the parent_answer and answer
> columns contain
> only the bit of information you're trying to get at and
> not a list of
> different bits, and the QofQ follows normal SQL rules,
> which it's
> supposed to.

> hth

>> I realise the data should be normalised, and it was, but
>> the normalisation in the database meant that any time you
>> tried to do
>> a heavy query on it, it killed our set up stone dead....
>> we had to get

>> a solution on the CF side, and this was it.... not the
>> best, but seems

>> to work

>> Now if I could just get a bit of SQL that did the same
>> and not a CF
>> UDF followed by a QoQ, I would be ecstatic, but surprised
>> ;-) It is a
>> complicated set up and one that just could not really be
>> explained
>> over the list methinks!

>> Cheers,

>> DC



>> -----Original Message-----
>> From: S. Isaac Dealey [mailto:[EMAIL PROTECTED]
>> Sent: 02 September 2003 23:51
>> To: CF-Talk
>> Subject: Re: SQL or CF Code help with extracting distinct
>> values from
>> a list


>> Sounds to me like a standard aggregated query... :-/ ...

>> You can (or should be able to) do this in either the
>> oracle query or a
>> cf qoq query...

>> <cfquery name="aggregated" ...>
>>   select parent_answer, answer,
>>   count(answer) as people_answered
>>   from not_aggregated
>>   group by parent_answer, answer
>>   order by parent_answer, answer
>> </cfquery>

>> Probably most efficient to use the database for that...

>> hth

>> s. isaac dealey                972-490-6624

>> team macromedia volunteer
>> http://www.macromedia.com/go/team

>> chief architect, tapestry cms  http://products.turnkey.to

>> onTap is open source
>> http://www.turnkey.to/ontap


>>> -----Original Message-----
>>> From: David Collie (itndac)
>>> Sent: 02 September 2003 18:22
>>> To: CF-Talk
>>> Subject: RE: SQL or CF Code help with extracting
>>> distinct
>>> values from
>>> a list


>>> Hi Isaac,

>>> Thanks for getting back to me....

>>> It's the distinct values in the PARENT_ANSWER that I
>>> need
>>> to return.  I
>>> am then looking to loop over these distinct
>>> PARENT_ANSWER's and see how
>>> many people had said, HATE for Sparrow's, LOVE for
>>> Sparrow's, DON'T CARE
>>> for Sparrow's and so on....

>>> Using your method, would it not then return as distinct
>>> values (using
>>> your QoQ)

>>> Bluetit, Sparrow
>>> Sparrow
>>> Bluetit, Crow
>>> Crow, Bluetit

>>> As it would see the PARENT_ANSWER as being distinct in
>>> it's column... I
>>> kinda need it to see the lists inside the records as
>>> well.... am I
>>> making sense?

>>> I was hoping for a miracle with SQL but I don't think
>>> that
>>> is going to
>>> happen :-(   Thing is everytime I've tried doing this in
>>> the past using
>>> CF Code, it chokesin the higher end reports...

>>> a UDF I would use to do this would look something lkike
>>> this... anybody
>>> suggest any improvements (btw flung the UDF together for
>>> this post but
>>> the logic I would use would be simlar)

>>> QueryName is 'answerWithParents'

>>>>RESPONSE_ID         ANSWER          PARENT_ANSWER
>>>>1                           Hate                    Bluetit, Sparrow
>>>>2                           Love                    Sparrow
>>>>3                           Don't care              Bluetit, Crow
>>>>4                           Hate                    Crow, Budgie

>>> <cfscript>
>>> udfGetDistinctParentAnswers(List) {
>>>     var returnList = "";
>>>     var theAnswer = "";

>>>     for (i=1; i LTE ListLen(List); i=i+1) {
>>>             theAnswer = ListGetAt(List, i);
>>>             if (ListFindNoCase(returnList, theAnswer)) {
>>>                     returnList = ListAppend(returnList, theAnswer);
>>>             }
>>>     }

>>>     return returnList;
>>> }

>>> distinctParents =
>>> udfGetDistinctParentAnswers(ValueList(answerWithParents.
>>> P
>>> A
>>> RENT_ANSWER));
>>> </cfscript>

>>> I've tried this for another problem and my high volume
>>> reports just
>>> grind to a halt when it tries and makes a ValueList of
>>> about hundred
>>> thousand records (no suprise) I realise turning it into
>>> an
>>> array may
>>> work a little bit faster but what would I use instead of
>>> ListFindNoCase?
>>> Is there an Array Alternative or would I have to loop
>>> round the entire
>>> list to see if it was in the array?

>>> Also, I need to work with the data as given, it solved a
>>> huge problem
>>> that was way bigger than this one I've got :-)

>>> Cheers

>>> DC



>>> -----Original Message-----
>>> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
>>> Sent: 02 September 2003 18:02
>>> To: CF-Talk
>>> Subject: Re: SQL or CF Code help with extracting
>>> distinct
>>> values from a
>>> list


>>> outside of using distinct in the oracle query just this:

>>> <cfquery name="distinct" dbtype="query">
>>> select distinct answer from myotherquery
>>> where parent_answer = '#myparentanswer#'
>>> </cfquery>

>>> hth

>>> isaac

>>> ------ Original Message ------
>>> From: <[EMAIL PROTECTED]>
>>> To: CF-Talk <[EMAIL PROTECTED]>
>>> Sent: Sep 02, 2003 05:35 PM
>>> Subject: Re: SQL or CF Code help with extracting
>>> distinct
>>> values from a
>>> list

>>>>Hi there,
>>>>
>>>>Trying to think of the best way to do this and I know
>>>>the
>>>>only way I
>>>>can think of it will cause the web server to fall over
>>>>due
>>>>to the
>>>>amount of data.....
>>>>
>>>>Problem.....
>>>>
>>>>Got a query returning something like this
>>>>
>>>>RESPONSE_ID                 ANSWER          PARENT_ANSWER
>>>>1                           Hate                    Bluetit, Sparrow
>>>>2                           Love                    Sparrow
>>>>3                           Don't care              Bluetit, Crow
>>>>4                           Hate                    Crow, Budgie
>>>>
>>>>What I need is SQL or CF code that I can run on the
>>>>PARENT_ANSWER list
>>>>that will give me all the distinct members of a list.
>>>>
>>>>ie the answer I would want from this would be 'Bluetit,
>>>>Sparrow, Crow,
>>>>Budgie'
>>>>
>>>>The records will be in the order of anything from a
>>>>couple
>>>>of thousand
>>>>to a couple of hundred thousand...
>>>>
>>>>I've thought of using ValueList(query.PARENT_ANSWER)
>>>>passing into a UDF

>>>>that would extract the distinct values, but I know for a
>>>>fact that in
>>>>some of my high volume reports that using this sort of
>>>>methid brings
>>>>CF/WebServer to complete standstill.. (pretty obvious
>>>>really, but it
>>>>was a bad experience and I dont want to go there again,
>>>>plus the
>>>>solution will not work in this case)
>>>>
>>>>Anybody have a better method of extracting the distinct
>>>>ones from a
>>>>list?
>>>>
>>>>BTW CF5 and Oracle 8.1.7
>>>>
>>>>Cheers in advance...
>>>>
>>>>DC

>>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>> ~
>>> ~
>>> ~~~~~~~~~~~|
>>> Archives:
>>> http://www.houseoffusion.com/lists.cfm?link=t:4
>>> Subscription:
>>> http://www.houseoffusion.com/lists.cfm?link=s:4
>>> Unsubscribe:
>>> http://www.houseoffusion.com/cf_lists/unsubsc
>>> ribe.cfm?user=633.558.4

>>> Your ad could be here. Monies from ads go to support
>>> these
>>> lists and provide more resources for the community.
>>> http://www.fusionauthority.com/ads.cfm




>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> ~
>> ~~~~~~~~~~~|
>> Archives: http://www.houseoffusion.com/lists.cfm?link=t:4
>> Subscription:
>> http://www.houseoffusion.com/lists.cfm?link=s:4
>> Unsubscribe:
>> http://www.houseoffusion.com/cf_lists/unsubsc
>> ribe.cfm?user=633.558.4

>> Signup for the Fusion Authority news alert and keep up
>> with the latest news in ColdFusion and related topics.
>> http://www.fusionauthority.com/signup.cfm



> s. isaac dealey                972-490-6624

> team macromedia volunteer
> http://www.macromedia.com/go/team

> chief architect, tapestry cms  http://products.turnkey.to

> onTap is open source           http://www.turnkey.to/ontap



> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> ~~~~~~~~~~~|
> Archives: http://www.houseoffusion.com/lists.cfm?link=t:4
> Subscription:
> http://www.houseoffusion.com/lists.cfm?link=s:4
> Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubsc
> ribe.cfm?user=633.558.4

> Get the mailserver that powers this list at
> http://www.coolfusion.com




~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Archives: http://www.houseoffusion.com/lists.cfm?link=t:4
Subscription: http://www.houseoffusion.com/lists.cfm?link=s:4
Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4

Get the mailserver that powers this list at 
http://www.coolfusion.com

Reply via email to