0

リーグの台本をまとめています。誰かがリーグに登録するとき、彼らはドロップダウンフィールドで利用可能なチームのリストから選択します。

私が抱えている問題は、複数のフィールドがある場合にこのエラーメッセージが表示されることです。

「サブクエリは複数の行を返します」

スクリプトは次のとおりです。

//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テーブルのチームの合計リストから、リーグメンバーテーブルの他のメンバーが選んだチームと一致しないものを選択しています。

4

3 に答える 3

2

「<>」を「not in (...)」に変更

なぜ?"<>" は単一の値を除き (例: 'team' <> 'xxx')、"not in" はセット ロジックを使用して多くのアイテムを処理します (例: 'team' not in ('aaa','bbb', 'ccc'))

于 2010-11-04T20:57:47.067 に答える
2

代わりに 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";
于 2010-11-04T20:58:30.533 に答える
0

この変更によりエラーは停止しますが、論理エラー (存在する場合) は停止しません。

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

彼の答えを見ると、Ass3mbler が正しいと思います。

于 2010-11-04T20:58:14.397 に答える