[Zope] Help: Recursive querying

Rob Page rob.page@digicool.com
Sat, 7 Aug 1999 18:32:41 -0400


> it is me again. I am finally at a point where I try to write my first
> application in Zope. My goal is to write a threaded Discussion Board.
> I did one before in Python using CGIs.
> Here is the supporting table in PostGreSQL:
> 
> id	int4
> pid	int4
> date	datetime
> title	varchar(40)
> body	text


First, I'd avoid using id as a column name in Zope -- Zope uses id and
can get cranky when conflicts arise..  Let's assume you change it to:

obj_id int4
parent_id int4
date datetime
title varchar(40)
body text

What I'm about to suggest came to me by way of Anthony Baxter -- any
cleverness it his.  Any bugs are mine.

Try:

SQL Method  sqlSelectChildren:
---
    select * from posts
    where
    <!--#if "parent_id == 0"-->
      parent_id is NULL
    <!--#else-->
      parent_id = <!--#sqlvar parent_id type=int-->
    <!--#/if-->
---

Now the tree. This DTML gives a tree, with each node in the tree a 
link to URL1/main_view?obj_id=<the object's id>

---
    <!--#with "_.namespace(parent_id = 0)"-->
      <!--#tree id=parent_id
branches_expr="sqlSelectChildren(parent_id=parent_id)"-->
	<a href="<!--#var URL1-->/ViewPost?parent_id=<!--#var
parent_id-->">
	     <!--#var title-->
	</a>
      <!--#/tree-->
    <!--#/with-->