[thelist] CFQuery sub search...
Susan Wallace
susanhw at webcastle.com
Fri Nov 2 10:48:03 CST 2001
Me again,
First of all, thank you VERY much to rudy, .jeff and Joshua for the helpful
replies!
Rudy gave me the answer to what I was trying to figure out, but as you all
pointed out, there is a "catch". I found the limitation with the IN clause,
but because of this data, I haven't been able to narrow it to less than 255
yet (to get that "Magic Number") to see how to break up the list into
chunks... I'm using MSSQL Server 7.
>parsing the list of pks into 255 unit chunks on the fly. besides, it'd have
>to be a pretty hefty database of material if you're going to encounter a
>chunk of records over 255 that meet the initial search criteria.
This is a reasonable assumption, but because of the data that I am working
with here, the initial search almost always returns a list well over 255 -
sometimes in the thousands. (I can describe the app if you think it would
help, I don't know of a better way to do this given the data I am working
with...)
So, if I use the tip below, (chunkArray), where is the "catch"...
If I follow you, it will take what I currently have:
<input type="hidden" name="thepks"
value="<cfoutput>#ValueList(Instrument.Title_ID)#"></cfoutput>
and instead of a hidden form field, make a variable and then make chunks,
using this syntax:
WHERE id IN (#chunkList#)
put it back into my search.
How does that "string" all of them back together so that you are actually
searching *all* of the results?
I need to mention that my Array skills are limited at best, so if I am
asking you to restate the obvious, I apologize. :)
><cfscript>
> chunkSize = 255;
> chunkDelimiter = ')' & Chr(10)& ' AND id IN (';
>
> for(i = chunkSize; i LT ArrayLen(chunkArray); i = i + chunkSize)
> chunkArray[i] = chunkArray[i] & '^';
> chunkList = ArrayToList(chunkArray);
> chunkList = Replace(chunkList, '^,', chunkDelimiter, 'ALL');
></cfscript>
>
>then, use the chunked up list in your cfml:
>
>WHERE id IN (#chunkList#)
Thank you Again!
Susan
More information about the thelist
mailing list