Mysql запрос зависит от другого запроса против соединения - PullRequest
1 голос
/ 18 апреля 2011

Застрял!Поэтому я изучал, как выполнить запрос, основанный на результате другого запроса, и понимаю, что он неэффективен (и я не получаю ожидаемого результата).

Вот информация, которая у меня есть:

У меня есть переменная $ _Get для team_id.

У меня есть две таблицы.Таблица 1 и Таблица 2. В таблице 1 есть team_id и player_id, а в таблице 2 - вся информация об игроке.

Я хочу получить имя игрока в таблице 2.Посмотрите на то, что я имел в виду ниже, чтобы получить лучший идентификатор:

//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 - лучший способ достичь этого безпока цикл.Я поиграл с этим вариантом, но не совсем понял, как работают объединения.Как бы я создать запрос, который достигает желаемого результата?

1 Ответ

1 голос
/ 18 апреля 2011

Визуализация Венна очень помогает: 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 .

...