If data being compared is in a database, you could instead use a DBMS action with either MINUS (which does exactly what you want) or NOT EXISTS (ditto). I've had better luck with NOT EXISTS than MINUS for complex requests, possibly due to lack of advanced SQL coding skills.

select count(o1.scid) from orid_scid o1, scientists s1 where
    o1.edate is null and s1.nedid is not null and s1.scid=o1.scid
    and not exists
    (select '*' from ned
        where nedid=s1.nedid)

Otherwise, we use a loop + filter out the ones that are the same, which is tedious and can be pretty slow if the arrays are big.

I definitely wish that Witango would implement a MINUS to add to its array functions (in fact, I've requested this more than once, including at the Witango conferences).

On Feb 16, 2006, at 8:53 PM, David Shelley wrote:

Another way to do this would be to create an array of all the rows in array1 that are not in array2, and an array of all the rows in 2 that are not in 1,
then append them together.

<@assign local$array1 <@array value="1;2;4;5;6;">>
<@assign local$array2 <@array value="2;3;4;5;6;7;">>

<@assign local$in1not2
        <@filter array=local$array1 expr="!(@@local$array2 contains #1)">>
<@assign local$in2not1
        <@filter array=local$array2 expr="!(@@local$array1 contains #1)">>

If both arrays are not empty then
        the result is local$in1not2 + local$in2not1
Else if local$in1not2 is not empty
        the result is local$in1not2
Else
        the result is local$in2not1


<@if expr="<@numrows array=local$in1not2>>0 && <@numrows
array=local$in2not1>>0">
        <@assign local$result @@local$in1not2>
        <@addrows array=local$result value="@@local$in2not1">
<@elseif expr="<@numrows array=lcoal$in1not2>>0">
        <@assign local$result @@local$in1not2>
<@else>
        <@assign local$result @@local$in2not1>
</@if>

@@local$result then contains the values 1;3;7;

Note that though this method uses only 2 filters and an addrows to implement an exclusive or, the filter statements can be quite slow if the arrays are
large.

Also, I ran the code above through my tango debugger an it works, however some modifications will be required for multi-column arrays or when doing
the comparison on a variable column number.

Dave Shelley

-----Original Message-----
From: Wolf, Gene [mailto:[EMAIL PROTECTED]
Sent: Thursday, February 16, 2006 5:23 PM
To: [email protected]
Subject: RE: Witango-Talk: Array processing

This would give me all members of both arrays. Yes, I could then use that to look at each individual array and if the number in the Union'd array did not appear I could build my own list. I was just hoping that there was some
function I may have overlooked that would do this for me. *laughs*
Apparently not from the responses. Sounds like it's time for me to build a
tcf to do this.

-----Original Message-----
From: Matt Muro [mailto:[EMAIL PROTECTED]
Sent: Thursday, February 16, 2006 5:14 PM
To: [email protected]
Cc: [email protected]
Subject: Re: Witango-Talk: Array processing


Just a thought as I run out the door here (I haven't tried this) ...

What about using <@UNION> to combine the arrays and then performing
<@DISTINCT> on the combined array to have only the DISTINCT elements
returned.



[email protected] on Thursday, February 16, 2006 at 5:03 PM -0500
wrote:
  Not at all. Assume I have array 1 with the following rows:

1
2
3
4
5

And I have Array 2 with the following rows:

2
3
5
6
7

I'd like to have some kind of function that would tell me all of the
elements of these two arrays that do not appear in BOTH arrays, those
being 1,4,6,7. Does that help?

-----Original Message-----
From: Scott Cadillac [mailto:[EMAIL PROTECTED]
Sent: Thursday, February 16, 2006 4:59 PM
To: [email protected]
Subject: RE: Witango-Talk: Array processing


Hi Gene,

I need something that compares
two arrays and returns to me those rows that do not exist in
BOTH arrays.

I don't get it. Is this a trick question?


Scott Cadillac,
Email: [EMAIL PROTECTED]
http://scott.cadillac.bz




-----Original Message-----
From: Wolf, Gene [mailto:[EMAIL PROTECTED]
Sent: Thursday, February 16, 2006 2:42 PM
To: [email protected]
Subject: Witango-Talk: Array processing

    I've seen a number of the array processing commands like
@intersect, @Union, etc. but I need something that compares
two arrays and returns to me those rows that do not exist in
BOTH arrays. Is there anything like the equivalent of
[EMAIL PROTECTED] *laughs*
______________________________________________________________
__________
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





________________________________________________________
Matt Muro                                      [EMAIL PROTECTED]
Harvard University                           phone:  617.998.8522
Division of Continuing Education       fax:      617.495.9176

______________________________________________________________________ __
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