Hello Mike, > $row=$dbh->prepare("SELECT contact_id,first_name,last_name,organisation > FROM tb_contacts WHERE organisation ILIKE ?");
[...] > while(($id,$first_name,$last_name,$organisation) = $row->fetchrow_array()) { [...] > $row=$dbh->prepare("SELECT id,contact_id,type_of_contact,priority FROM > tb_contact_role WHERE contact_id ILIKE ?"); [...] >} [...] > This only produces on record at the top-level, if I dont have the select > inside the loop, then all matching records appear > > Anyone any idea where I am going wrong You are using the same variable as the statement handle for both queries ($row). In effect, since your second SELECT probably returns only one row (probably the detail of the contact you got in the first SELECT), the enclosing while ends afterwards because there are no more rows to get from that statement handle (the second SELECT). I would suggest you declare a new variable inside your while, say $contact. Something like this: my $contact = $dbh->prepare(qq[SELECT id, contact_id, type_of_contact, priority FROM tb_contact_role WHERE contact_id ILIKE ?]); I also suggest better indentation and whitespace usage in your code. That will get very hard to read very fast... Hope that helps, J-S -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>