滞留!所以我一直在研究如何根据另一个查询的结果运行查询,并了解它效率不高(而且我没有得到我期望的结果。)
以下是我的信息:
我有一个用于team_id的$ _Get变量。
我有两张桌子。表1和表2.表1包含team_id和player_id,而表2包含所有玩家信息。
我想在Table2中获取player_name。看看我在下面的想法,以获得更好的身份:
//assign and clean up tid
$tid = mysql_real_escape_string($_GET['tid']);
//query to find player id where the team id matches tid
$sql = "SELECT player_id FROM table1 WHERE team_id = '$tid'";
$result = mysql_query($sql);
//then I was basically going to run a while loop with another query to get the playerid
while ($row=mysql_fetch_array($result)){
$playerid=$row['player_id'];
$sql2 = "select player_name from table2 where player_id = '$playerid'";
$result2 = mysql_query($sql2);
echo $result2;
}
在研究这个时,我发现似乎有一种共识,即使用mysql连接是没有while循环实现这一点的最佳方法。我已经玩过这个选项但是并不真正理解联接是如何工作的。 我如何创建一个能够达到我想要的结果的查询?
答案 0 :(得分:1)
维恩可视化帮助很多:http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html
编辑:我认为这就是你想要的......
SELECT p.player_name
FROM players AS p
INNER JOIN team_players AS t ON (t.player_id = p.player_id)
WHERE t.team_id = $tid
我强烈建议您选择一本SQL书。用易于理解的语言编写的Head First SQL。