couldn't this be accomplished with a Left Join? Depending on how your tables are arranged you should be able to get all (sub)sub-names out and in the same result set using the top_name with a Left Join. any key that relates to the parent key would be returned. it looks like you have them all in the same table though....which may furuther complicate things, if so, how is the relatoinship maintained in the table(s)? Jeff "Peter Sharpe" <banana__peel@msn To: php-db@lists.php.net .com> cc: Subject: foreach() & db brainiacs please help? 09/09/2003 03:17 PM Please respond to "Peter Sharpe" I have a database full of names. each name could be linked to any number of sub-names, each sub-name could be linked to any number of sub-sub-names, to infinity (unlikely but possible). I need to iterate through this nest of names starting with a main name; lets call the main name Peter. Peter could have John, Tim & Mike working for him. Tim could have Greg working for him. function select_names($current_top_name){ global $dbh; $sql = " SELECT name_id_fk FROM name_relation WHERE top_name_id_fk = '".$current_top_name."' "; $rs = pg_query($dbh, $sql); if(($num_rows = pg_num_rows($rs)) > 0){ for($i=0;$i<$num_rows;$i++){ $row = pg_fetch_row($rs, $i, PGSQL_ASSOC); $associated_names[] = $row['name_id_fk']; } pg_free_result($rs); } // end if(($num_rows = pg_num_rows($rs)) > 0) return $associated_names; } // end function select_names() $current_top_name = 'Peter'; while(!$stop){ $assoc_names = select_names($current_top_name); foreach($assoc_names as $key => $val){ print($val); $more_assoc_names = select_names($val); if($more_assoc_names){ ARG HELP IM NOT SMART ENOUGH } } // end while(!$stop) } // end foreach($assoc_names as $key => $val) -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php