Hi Sabra,
There's no elegant provision for implicitly joining things onto DAO objects, but there is a hack. See http://common-lisp.net/project/postmodern/postmodern.html#with-column-writer... . Here's the only that I ever made of it (as far as I know, it's the only use ever made of it at all), with some names replaced to protect all the trade secrets that are obviously present in such a thing:
(defun get-foos-by (condition) (with-column-writers ('actives 'has-active-bars 'shape 'shape) (query-dao 'foo-desc (:select 'foo.* (:as 'shape.name 'shape) (:as (:exists (:select 1 :from 'bar :where (:and (:= 'foo-id 'foo.id) 'active))) 'actives) :from 'foo :left-join 'shape :on (:= 'shape.id 'foo.shape-id) :where (:raw condition)))))
Hope that helps, Marijn