How about dynamically generating a set of UNIONed queries (one for
each of the years in the range)?

--
WSS4CF - WS-Security framework for CF
http://wss4cf.riaforge.org/



On 27 September 2010 07:58, Mike Chabot <[email protected]> wrote:
>
> If someone is in office with a range of 2004 - 2006, the year 2005
> does not appear in the SQL results, yet 2005 needs to be grouped on.
> You can't group on a value that doesn't exist. There is no year column
> in the output to group on, only a start date and an end date.
>
> -Mike Chabot
>
> On Sun, Sep 26, 2010 at 4:02 PM, Russ Michaels <[email protected]> wrote:
>>
>> Mike,
>>
>> why do you would you need to know the exact years to use grouped output?
>> This is not how it works.
>> Grouped output simply groups the output by the defined column
>> So if you group ny year, it will output all records with the same year
>> together allowing you to then separate the output, add headings etc.
>>
>>
>> On Sun, Sep 26, 2010 at 4:34 PM, Mike Chabot <[email protected]> wrote:
>>
>>>
>>> The grouped output doesn't work because the exact years are not known
>>> in the query output. Only the date range is known.
>>>
>>> -Mike Chabot
>>>
>>> On Sun, Sep 26, 2010 at 5:20 AM, Russ Michaels <[email protected]>
>>> wrote:
>>> >
>>> > did the grouped cfoutpout not work for you then ?
>>> >
>>> > On Sun, Sep 26, 2010 at 4:55 AM, GLM <[email protected]> wrote:
>>> >
>>> >>
>>> >> Mike thanks for the lead. It had crossed my mind to build a numbers
>>> table
>>> >> but I didn't think it would work. (I've never used them myself.)
>>> >>
>>> >> I thought that it was somewhat excessive as there would have to be at
>>> least
>>> >> 365x220 rows (over 80,000). In the examples I gave I think one row per
>>> year
>>> >> (220) would be more than good enough but there are numerous exceptions
>>> >> (people dying in office, getting nominated to higher office, etc...)
>>> >>
>>> >> I'll give it a shot.
>>> >>
>>> >> Thx
>>> >>
>>> >> -----Original Message-----
>>> >> From: Mike Chabot [mailto:[email protected]]
>>> >> Sent: Saturday, September 25, 2010 10:50 PM
>>> >> To: cf-talk
>>> >> Subject: Re: cfoutput or cfloop? which is the more practical solution
>>> >>
>>> >>
>>> >> You can do this in SQL, although the methods I can think of involve
>>> >> advanced techniques so I hesitate to recommend them based on your
>>> >> stated SQL experience. One technique involves joining to a "numbers
>>> >> table" which will transform the start and end dates into one row per
>>> >> year.
>>> >>
>>> >> You can use the cfloop technique in your first post. It should get the
>>> >> job done. It isn't the fastest method, but it could be fast enough.
>>> >> One alternative to consider would be to have one big database query,
>>> >> then loop over the one query once and build up an array or a structure
>>> >> containing the data you want to output, then cfoutput the array or
>>> >> structure.
>>> >>
>>> >> -Mike Chabot
>>> >>
>>> >> On Fri, Sep 24, 2010 at 10:28 PM, GLM <[email protected]> wrote:
>>> >> >
>>> >> > Thanks Mike,
>>> >> >
>>> >> > I'm not a SQL expert but I don't see how. I can do something with
>>> >> particular
>>> >> > fields such as the year the person was elected (governorDateStart) or
>>> >> when
>>> >> > the person left office governorDateEnd
>>> >> >
>>> >> >
>>> >> >        SELECT
>>> >> >                governorParty,
>>> >> >                COUNT(governorState),
>>> >> >                governorDateStart
>>> >> >        WHERE gender=female
>>> >> >
>>> >> >        FROM
>>> >> >                governors
>>> >> >
>>> >> >        GROUP BY governorParty, governorDateStart
>>> >> >
>>> >> > And get something along the line of:
>>> >> >
>>> >> > 2001 - Republican - 2
>>> >> > 2002 - Republican - 1
>>> >> > 2003 - Democratic - 3
>>> >> > 2003 - Republican - 1
>>> >> > 2004 - Democratic - 1
>>> >> > 2004 - Republican - 1
>>> >> > 2005 - Democratic - 1
>>> >> > 2006 - Republican - 1
>>> >> > 2009 - Democratic - 1
>>> >> > 2009 - Republican - 1
>>> >> >
>>> >> > But what's desired is: how many are in office at a particular time.
>>> >> > For instance:
>>> >> >  list the governors in 1889;
>>> >> >  list the number of female governors in 2005
>>> >> >
>>> >> > thx
>>> >> >
>>> >> >
>>> >> >
>>> >> >
>>> >> > -----Original Message-----
>>> >> > From: Mike Chabot [mailto:[email protected]]
>>> >> > Sent: Friday, September 24, 2010 7:35 PM
>>> >> > To: cf-talk
>>> >> > Subject: Re: cfoutput or cfloop? which is the more practical solution
>>> >> >
>>> >> >
>>> >> > Are you able to craft a query that will return the results you need
>>> >> > without ColdFusion having to do any extra parsing of it? That is the
>>> >> > first thing I would try. In your brief example it seems like that
>>> >> > would be solved using a GROUP BY statement in the query.
>>> >> >
>>> >> > -Mike Chabot
>>> >> >
>>> >> > On Fri, Sep 24, 2010 at 7:23 PM, GLM <[email protected]> wrote:
>>> >> >>
>>> >> >> I have a database with presidents, governors, etc. and need to be
>>> able
>>> >> to
>>> >> >> pull out information such as:
>>> >> >>
>>> >> >>
>>> >> >>
>>> >> >> Get the number of all female governors over the years and spit out
>>> >> > something
>>> >> >> on the order of:
>>> >> >>
>>> >> >>
>>> >> >>
>>> >> >> 1789 : 0
>>> >> >>
>>> >> >> 1790 : 0
>>> >> >>
>>> >> >> .
>>> >> >>
>>> >> >> 2005 : 10
>>> >> >>
>>> >> >> .
>>> >> >>
>>> >> >> 2010 : 6
>>> >> >>
>>> >> >>
>>> >> >>
>>> >> >> The database has dateStarted, dateEnded
>>> >> >>
>>> >> >>
>>> >> >>
>>> >> >> I can loop through this  [SIMPLIFIED CODE]
>>> >> >>
>>> >> >>
>>> >> >>
>>> >> >> <cfloop>
>>> >> >>
>>> >> >>                <cfquery>
>>> >> >>
>>> >> >>                                SELECT
>>> >> >>
>>> >> >>                                FROM
>>> >> >>
>>> >> >>                                WHERE year == #desiredYear#
>>> >> >>
>>> >> >>
>>> >> >>
>>> >> >>                </cfquery>
>>> >> >>
>>> >> >> </cfloop>
>>> >> >>
>>> >> >>
>>> >> >>
>>> >> >> This seems like a foolish way to do this. Is there a better way to do
>>> >> it?
>>> >> > Is
>>> >> >> it better to make one query and then use CF to parse it
>>> >> >>
>>> >> >>
>>> >> >>
>>> >> >>
>>> >> >>
>>> >> >>
>>> >> >>
>>> >> >>
>>> >> >>
>>> >> >>
>>> >> >>
>>> >> >>
>>> >> >
>>> >> >
>>> >> >
>>> >> >
>>> >>
>>> >>
>>> >>
>>> >>
>>> >
>>> >
>>>
>>>
>>
>>
>
> 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Order the Adobe Coldfusion Anthology now!
http://www.amazon.com/Adobe-Coldfusion-Anthology-Michael-Dinowitz/dp/1430272155/?tag=houseoffusion
Archive: 
http://www.houseoffusion.com/groups/cf-talk/message.cfm/messageid:337568
Subscription: http://www.houseoffusion.com/groups/cf-talk/subscribe.cfm
Unsubscribe: http://www.houseoffusion.com/groups/cf-talk/unsubscribe.cfm

Reply via email to