All ready skinned and dried.  Went with a Direct DBMS in a tcf so I can reuse the object.
 
Thanks.
 
Ted


From: John McGowan [mailto:[EMAIL PROTECTED]
Sent: Thursday, May 05, 2005 10:29 AM
To: [email protected]
Subject: Re: Witango-Talk: filtering arrays

A brute force algorithm would be O(n*m) where n is the size of the selection and m is the size of the set you're choosing the selection from

You could do that brute force by simply nesting a couple of loops.

Another way to solve it would be to sort the two arrays first by the column that you're trying to match them on.  Then you could do a while loop with two indicies (one for each array)... you don't have to backtrack because you know that the id's are in order

The while loop would be O(max (n,m)) or for our purposes, since m is bigger O(m)  but wait, we forgot about the sorting...  depending on the sorting algorithm you use, (i'm not sure what type of algorithm witango uses)  let's assume that it's algorithm is a good one, and operates in  O(n log(n)) time  so your total operation time would be O(m + m log m)  Which should be be better than the nested loops at O (m * n)  unless of course n is very very small... because if n is small, you're looking at an O(m) algorithm using the nested loops, and you can't get any better than that.

There are multiple ways to skin this cat Ted... You just need to grab a knife a skin it.  Try to make whatever you write reusable.

Or even better, find someone who's done it for you already!!!

/John

Ted Wolfley wrote:
According to the help descriptions of <@union> and <@intersect> tags, all arrays must have the same number of columns in them.  I have an array with 1 column that has the selected values and another with 30 columns from which the selected values came from.  What is the fastest way to find out which records in the 30 column array were selected? Like 20 selected records out of 10,000 records.
 
Ted


From: QSN Janet Case [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, May 04, 2005 5:37 PM
To: [email protected]
Subject: RE: Witango-Talk: filtering arrays

Using <@union> tag. There is a usefull way to use the UNION tag.
You have two arrays:
(1) an array from your database.
(2) an array of selected rows
 
Add a column to the  array (1), the values in this array for this column will be empty, call this COLUMN "checked"
Now do your UNION on the common ID column. When  the UNION executes it will put a VALUE in that empty "checked" COLUMN form the other array (2).  Now you can do a simple FILTER on the resulting UNION so that only those ROWS where the "checked" COLUMN is not empty.  The action of the UNION depends on what array is placed first.
 
I have used this a few times, Janet.  I could send you a short word doc if you want.
 
 
 
  I will look for the code, but I remember that I did intersect on two arrays, comparing first columns, and the two arrays were not the same number of columns. It does work, and is much more efficient then looping.

-- 

Robert Garcia
President - BigHead Technology
VP Application Development - eventpix.com
13653 West Park Dr
Magalia, Ca 95954
ph: 530.645.4040 x222 fax: 530.645.4040

On May 4, 2005, at 1:12 PM, Ted Wolfley wrote:

What I am doing is bring back information from a 30 column table and putting it into an array.  The array is used to create a selection form using the unique id for the checkbox value.  After the submit, I use the <@POSTARG NAME='a_userid' TYPE=ARRAY> to create an one column array of the checked selections. 
 
What I am trying to do is to use the selected values to bring back data from the orignial array to create a confirmation page before I preform the next action.  Since I already have the data in an array I thought I could use it.  The <@union> tag won't work because it combines. The <@intersect> tag requires that the two arrays have the same number of columns.  May be I should just use an another Direct DBMS action instead.
 
Ted


From: Robert Garcia [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, May 04, 2005 3:14 PM
To: [email protected]
Subject: Re: Witango-Talk: filtering arrays

Looping through rows should be avoided in witango whenever another solution is possible. Row looping is an expensive task.

Try something like this, since it is a comma delimited list, you can turn into an array and filter. You can turn into array with the <@array> tag, or:

<@assign request$temp <@transpose <@tokenizer "<@var request$vdeletelist>" chars=",">>
<@! now you have a 1 column array with you items >

Then you can use <@union> to see where the arrays intersect.

-- 

Robert Garcia
President - BigHead Technology
VP Application Development - eventpix.com
13653 West Park Dr
Magalia, Ca 95954
ph: 530.645.4040 x222 fax: 530.645.4040

On May 4, 2005, at 12:01 PM, Ted Wolfley wrote:

I couldn't get this to work, I think it is because of a comma delimited list of values and contains uses only one value.   I went with using a row loop inside another row loop.
 
ted


From: Ben Johansen [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, May 04, 2005 2:48 PM
To: [email protected]
Subject: RE: Witango-Talk: filtering arrays

Try this

<@ASSIGN NAME="vconfirmlist" VALUE="<@FILTER ARRAY='varrayout' EXPR=”@@request$vdeletelist’ contains #usrid>" SCOPE="request">

Might work, I did this once but cant find code


 

Ben Johansen - http://www.pcforge.com
Authorized Witango & MDaemon Reseller
Available for Web App. Developement


From: Ted Wolfley [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, May 04, 2005 6:22 AM
To: [email protected]
Subject: Witango-Talk: filtering arrays


 

Hi,


 

I am trying to <@filter> an array by using values already selected from the array.  The sql equivalent is "select * from array where userid in (selected list)".

Can a list of values be used in the filter action?


 

<@ASSIGN NAME="vconfirmlist" VALUE="<@FILTER ARRAY='varrayout' EXPR='#usrid in (@@request$vdeletelist)'>" SCOPE="request">

@@request$vdeletelist has numeric values that are separated by commas and #usrid  is a numeric column.


 

Thanks.

Ted Wolfley
Database/Internet Programmer
The Ogden Group of Rochester
phone: (585) 321 1060 x23
fax: (585) 321 0043
[EMAIL PROTECTED]

www.ogdengroup.com


 
________________________________________________________________________
TO UNSUBSCRIBE: Go to http://www.witango.com/developer/maillist.taf
        
________________________________________________________________________
TO UNSUBSCRIBE: Go to http://www.witango.com/developer/maillist.taf
        
________________________________________________________________________
TO UNSUBSCRIBE: Go to http://www.witango.com/developer/maillist.taf
        


________________________________________________________________________
TO UNSUBSCRIBE: Go to http://www.witango.com/developer/maillist.taf
      
________________________________________________________________________
TO UNSUBSCRIBE: Go to http://www.witango.com/developer/maillist.taf
      

________________________________________________________________________
TO UNSUBSCRIBE: Go to http://www.witango.com/developer/maillist.taf
    
________________________________________________________________________
TO UNSUBSCRIBE: Go to http://www.witango.com/developer/maillist.taf
  
________________________________________________________________________
TO UNSUBSCRIBE: Go to http://www.witango.com/developer/maillist.taf
  
________________________________________________________________________
TO UNSUBSCRIBE: Go to http://www.witango.com/developer/maillist.taf
________________________________________________________________________
TO UNSUBSCRIBE: Go to http://www.witango.com/developer/maillist.taf

Reply via email to