Sorry, I should have looked at it more closely. You are right, there is
currently no (at least easy) way to wire several conditions together
using AND or OR. So the constraints can be created, the union cannot.
There has been some discussion about replacing/enhancing the dynamic
SQL, but I do not know when this will be implemented, maybe one of the
developers can comment on this.

See:

http://opensource.atlassian.com/confluence/oss/display/IBATIS/Improved+D
ynamic+SQL+Whiteboard

Niels

-----Original Message-----
From: Vadim Grinshpun [mailto:[EMAIL PROTECTED] 
Sent: woensdag 28 juni 2006 22:22
To: [email protected]
Subject: Re: flexible queries?

Er... Thanks, but either you misread my example, or I completely do not 
understand what you mean.
The example I gave uses a large chunk of  iBATIS-like *pseudocode* 
(there is no 'if' tag and no 'or' tag!), and thus cannot work as is.
I've looked through the Dev Guide ( version that was in SVN as of 6/20),

but so far was unable to find anything that would allow for this kind of

functionality. (effectively, what I want is to have a *SINGLE* iBATIS 
conditional that would test multiple properties and OR the results).
Could you take another look at it, please, or explain in more detail?  
Thanks!
-Vadim
Niels Beekman wrote:
> Yes, that should work out just fine. See the Developer Guide for some
> examples...
>
> -----Original Message-----
> From: Vadim Grinshpun [mailto:[EMAIL PROTECTED] 
> Sent: woensdag 28 juni 2006 20:58
> To: [email protected]
> Subject: flexible queries?
>
> Hi everyone,
>
> Suppose I have a query where I want a join to be performed only if
*one 
> or more* of a set of parameters are present.
> Is there a way in SqlMaps to do something like this? (below is an 
> example snippet of  what I'd like to do, using some pseudocode in the 
> first <dynamic> section):
>
> SELECT * FROM
>     table_foo f, table_bar b
>    <dynamic> <!-- if any of the params in the conditional are defined,

> add one more table to join -->
>       <if>
>         <or>
>           <isEqual property="X.defined" compareValue="true" />
>           <isEqual property="X.defined" compareValue="true" />
>         </or>
>        <then>, table_baz z</then>
>       </if>
>    </dynamic>
>    WHERE f.field = b.field
>    <dynamic>
>      <isEqual property="X.defined" compareValue="true" prepend="AND" 
>  >z.x_field > #X.value#</isEqual>
>      <isEqual property="Y.defined" compareValue="true" prepend="AND" 
>  >z.y_field = #Y.value#</isEqual>
>   </dynamic>
>   
>
> Thanks,
> --Vadim
>
>   

Reply via email to