sql жить из предметов из другой таблицы - PullRequest
0 голосов
/ 04 ноября 2010

Я составляю сценарий лиги. Когда кто-то регистрируется в лиге, он выбирает из списка доступных команд в раскрывающемся поле.

У меня проблема в том, что я получаю это сообщение об ошибке, когда есть более одного поля.

«Подзапрос возвращает более 1 строки»

вот сценарий:

//List available teams
$query_chamoline = "SELECT * FROM MLB WHERE `team`<>(SELECT `team` FROM leaguemembers     WHERE `leagueid`=\"$lid\" AND `active`='Y') ORDER BY `team` ASC";
$chamoline = mysql_query($query_chamoline) or die(mysql_error());
$row_chamoline = mysql_fetch_assoc($chamoline);
$totalRows_chamoline = mysql_num_rows($chamoline);

<select id="team">
<option value="">Select Available Team</option>
<?php do { ?>   

  <?php
$tname=$row_chamoline['team'];

if($totalRows_chamoline>0)
{?>
<option value="<?php echo $tname ?>"><?php echo $tname ?></option><?php }} while     ($row_chamoline = mysql_fetch_assoc($chamoline)); ?>
</select>

Я выбираю из общего списка команд в таблице MLB, который не соответствует командам, выбранным другими участниками в таблице leaguemembers.

Ответы [ 3 ]

2 голосов
/ 04 ноября 2010

Попробуйте вместо этого использовать NOT IN:

$query_chamoline = "SELECT * FROM MLB WHERE `team` NOT IN(SELECT `team` FROM leaguemembers     WHERE `leagueid`=\"$lid\" AND `active`='Y') ORDER BY `team` ASC";
2 голосов
/ 04 ноября 2010

заменить "<>" на "не в (...)"

почему?«<>» исключает одно значение (например, «team» <> «xxx»), «not in» использует логику набора для обработки многих элементов (например, «team» not in («aaa», «bbb»,'ссс'))

0 голосов
/ 04 ноября 2010

Это изменение остановит ошибку, но не логическую ошибку (если она существует)

$query_chamoline = "SELECT * FROM MLB WHERE `team`<>(SELECT TOP 1 `team` FROM leaguemembers     WHERE `leagueid`=\"$lid\" AND `active`='Y') ORDER BY `team` ASC";

глядя на его ответ, я ожидаю, что Ass3mbler прав.

...