SELECT ограничивает только результаты на основе списка CSV из отдельной таблицы - PullRequest
1 голос
/ 02 февраля 2010

Итак, у меня есть список CSV в одной таблице. (EG: 1,3,19) Я хочу найти все имена пользователей из другой таблицы, где идентификаторы совпадают с любым из них.

Я чувствую, что должен быть в состоянии сделать что-то вроде:

<?
$query = "SELECT player_ids FROM cast_list WHERE game='".$gameid."' ";
$result = mysql_query($query) or die(mysql_error());
$playerquery = "SELECT username,id FROM players WHERE id IN (".$result.") ORDER BY username;
$player_result = mysql_query($playerquery) or die(mysql_error());
echo "<ul>";
while ($row = mysql_fetch_array($player_result) ) {
  echo "<li>".$row['username']."</li>";
}
echo "</ul>";
?>

но я не могу заставить его работать. Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 02 февраля 2010

Вы также можете использовать подзапрос (который будет быстрее):

$playerquery = "SELECT username,id 
                FROM players 
                WHERE id IN (SELECT player_ids FROM cast_list WHERE game='".$gameid."') 
                ORDER BY username";

Кстати, если game является целочисленным полем, кавычки (' ') не помещаются вокруг значения.

0 голосов
/ 02 февраля 2010

Идея верна, но вам нужно перевести $result в реальный массив строк:

$game_ids = array();
while ($row = mysql_fetch_array($result) ) {
 $game_ids[] = .$row[1];
}

Теперь используем implode для преобразования массива в значения, разделенные запятыми, с запятой:

$playerquery = "SELECT username,id FROM players WHERE id IN (" . implode(",",$result) . ") ORDER BY username;
...