Ok, using Postgresql 7.0.2-2, PoPo 2.0.1, ZPoPyDA 1.1-pre2, Zope 2.2.5, here's a reproducible scenario: Create the following tables in your database: create table bugtest1 ( name text, domain text, ); create table bugtest2 ( name text, domain text, refer text, foreign key(refer) references bugtest1(name) ); insert into bugtest1 values ('a','aa'); insert into bugtest1 values ('b','bb'); insert into bugtest1 values ('c','cc'); insert into bugtest2 values ('w','ww','a'); insert into bugtest2 values ('x','xx','a'); insert into bugtest2 values ('y','yy','a'); insert into bugtest2 values ('z','zz','a'); insert into bugtest2 values ('g','gg','b'); insert into bugtest2 values ('h','hh','b'); insert into bugtest2 values ('i','hh','b'); Create the following folder structure: /root dbconn (ZPoPyDA connection to whatever database you just put the tables in) index_html get_host (Z SQL method) get_alias (Z SQL method) /alias show /host show /root/get_host select * from bugtest1 /root/get_alias select * from bugtest2 <dtml-sqlgroup where> <dtml-sqltest name column=refer type=string> </dtml-sqlgroup> /root/alias/show <TR><TD></TD><TD>&dtml-name;</TD><TD>&dtml-domain;</TD></TR> /root/host/host <TR><TD>&dtml-name;</TD><TD>&dtml-domain;</TD></TR> /root/index_html: 1: <dtml-var standard_html_header> 2: <TABLE> 3: <dtml-in get_host> 4: <dtml-with host><dtml-var show></dtml-with> 5: <dtml-in "get_alias(name=name)"> 6: <dtml-let name2=name 7: domain2=domain> 8: <dtml-with alias> 9: <TR><TD>POINT A</TD><TD>&dtml-name;</TD><TD>&dtml-domain;</TD></TR> 10: <TR><TD>POINT B</TD><TD>&dtml-name2;</TD><TD>&dtml-domain2;</TD></TR> 11: <dtml-var show> 12: </dtml-with> 13: <TR><TD>POINT C</TD><TD>&dtml-name;</TD><TD>&dtml-domain;</TD></TR> 14: <TR><TD>POINT D</TD><TD>&dtml-name2;</TD><TD>&dtml-domain2;</TD></TR> 15: </dtml-let> 16: </dtml-in> 17: </dtml-in> 18: </TABLE> 19: <dtml-var standard_html_footer> The output of all that is (a bit hard to read): a aa POINT A a aa POINT B w ww a aa POINT C w ww POINT D w ww POINT A a aa POINT B x xx a aa POINT C x xx POINT D x xx POINT A a aa POINT B y yy a aa POINT C y yy POINT D y yy POINT A a aa POINT B z zz a aa POINT C z zz POINT D z zz <snipped for clarity> So: at point A, the "name" and "domain" variables have been overwritten with the "name" and "domain" variables as they were on line 6/7, *BUT* name2 and domain2 haven't been overwritten (point B). BUT, outside the dtml-with tab (point C) "name" and "domain" are at their correct values. So - given that the dtml-with tag "must" work, I'm clearly not understanding *how* it works. Regards, Phil +----------------------------------+ | Phil Mayers, Network Support | | Centre for Computing Services | | Imperial College | +----------------------------------+