...all you can get is one row from the results_team...
To say it like this in the first query (row3) you get only one row in result because you don't loop it...
Then in the next query you ask for all the data that has the team_id from row3...
The way it should work is like if you have 4 records in the results_comp_run_teams table with this team_id you will get four records if not, well, there is no way with this code to do it:
If I'm guessing right try this code:
<select size="1" name="team1_id<?php echo $i ?>">
<?php
$result3 = mysql_query ("SELECT * From results_comp_run_teams where comp_run_id = $comp_run_id");
while($row3 = mysql_fetch_array($result3)){//loop this query to get all the team_id's from this table
$team_id = $row3["team_id"];
$result4 = mysql_query ("SELECT * from results_team where team_id = $team_id");
while($row4 = mysql_fetch_array($result4))
{
?>
<option value="<?php echo $row4["team_id"]; ?>"><?php echo $row4["team_name"]; ?></option>
<?php
}
}
?>
</select>