2013-05-25 2 views
0

У меня есть база данных, где я пытаюсь отобразить 20 лучших игроков на моем игровом сервере. Я возвращаю всех 20 человек из моей базы данных, но я бы хотел отобразить их имя, а также количество «очков», которые у них есть. Моя проблема заключается в том, что в таблице, где отображается верхняя 20, она не показывает свой последний известный псевдоним, и мне нужно затем выполнить поиск в другой таблице clients, чтобы соответствовать идентификатору игрока с последним известным псевдонимом, но как мне сделать foreach на clients, чтобы соответствовать всем 20 игрокам с их псевдонимом, он вернет только первый псевдоним, который можно увидеть в запросе foreach.Foreach Внутри заявления?

Запрос на топ-20 игроков -

$query = " 
     SELECT * 
FROM `xlr_playerstats` 
ORDER BY `xlr_playerstats`.`kills` DESC 
LIMIT 0 , 20 
";  
try 
{ 
    $stmt = $b3->prepare($query); 
    $stmt->execute(); 
} 
catch(PDOException $ex) 
{ 
    die("Failed to run query: " . $ex->getMessage()); 
} 
$rows = $stmt->fetchAll(); 

Это затем возвращает «идентификатор клиента», что мне нужно пересечь ссылку на clients таблицу для последнего известного псевдонима. Затем я пытаюсь выполнить запрос foreach на всех этих идентификаторах, чтобы вернуть псевдоним, но он вернет только первый цикл в foreach.

foreach($rows as $row): 
$query = " 
     SELECT * 
FROM `clients` 
WHERE id = ".$row["client_id"]." 
";  
try 
{ 
    $stmt = $b3->prepare($query); 
    $stmt->execute(); 
} 
catch(PDOException $ex) 
{ 
    die("Failed to run query: " . $ex->getMessage()); 
} 
$names = $stmt->fetch(); 
endforeach; 

Как я могу использовать foreach для возврата успешного запроса со всеми 20 из моих псевдонимов клиентов?

+0

Вы, вероятно, захотите использовать sql 'JOIN'. –

+0

может снабжать структуры таблицы и некоторые фиктивные данные. Соединения полезны, но может быть и более простой способ. – Kevin

ответ

3

Я думаю, вы хотите использовать соединение.

SELECT * 
FROM `xlr_playerstats` 
INNER JOIN `clients` ON `clients`.`id` = `xlr_playerstats`.`client_id` 
ORDER BY `xlr_playerstats`.`kills` DESC 
LIMIT 0 , 20 
Смежные вопросы