jackrabbit-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alexander Klimetschek" <aklim...@day.com>
Subject Re: SQL query questions: all nodes which do not have certain subnodes
Date Mon, 30 Jun 2008 10:55:30 GMT
Hi Will!

Not very experienced with SQL in JCR, since I like using Xpath more
for JCR queries, so this is an Xpath solution ;-)

You should store the list of supercategories in a multi-value property
instead of a subnode (using multival properties is more natural for
JCR than using node structures with self-created indices like 0,1,..
in your example). Then you would have a multi-value property
superCategories in each category node (or none, if it is empty). The
Xpath query for your use case of finding categories with a
supercategoriy would then be:

/jcr:root/path/to/my/productCategories/*[@superCategories]

Or for finding nodes that don't have a supercategory:

/jcr:root/path/to/my/productCategories/*[not(@superCategories)]

Hope this helps!

Regards,
Alex

On Sun, Jun 29, 2008 at 6:28 AM, Will Scheidegger
<willscheidegger@mac.com> wrote:
> I've got a node structure like this
>
> - path
>        - to
>                - my
>                        - productCategories
>                                - category1
>                                - category2
>                                        - superCategories
>                                                - 0 = category1
>                                - category3
>                                        - superCategories
>                                                - 0 = category1
>                                - category4
>                                        - superCategories
>                                                - 0 = category2
>                                                - 1 = cagegory3
>                                - category5
>
> As you can see, a category can have references to multiple superCategories.
> Now I would like to get all "top level" productcategories, i.e. all product
> categories with no supercategories assigned (= category1 and category5 in my
> sample above). Strange enough finding all categories which do have a super
> category assign works fine:
>
> select * from nt:base where superCategories IS NOT NULL
>
> The oposit does not work:
>
> select * from nt:base where superCategories IS NULL
>
> lists all product categories! Strange to me, but maybe one of you has a good
> explanation or even better: A solution to my problem? And to make it a bit
> more difficult: This node should also be found by the query:
>
> - category6
>        - superCategories
>
> (i.e. a node with a subnode "superCategories", but this node does not
> contain any references).
>
> Thanks for the help!
> -will
>



-- 
Alexander Klimetschek
alexander.klimetschek@day.com

Mime
View raw message