テーブルから情報を取得しようとしています。
ボードとサブボードがあります。sub_id
表の列board
は、ボードがサブボードであるかどうかを示しています。サブボードの場合id
、親ボードの が値になり、そうでない場合、セルは null になります。
ボードにサブボードがあるかどうかを表示するために、これを書きました。
<?php
$data = mysql_query("SELECT * FROM board WHERE sub_id='$boardId'")
or die(mysql_error());
while($info = mysql_fetch_array( $data ))
{
Print "<br>Sub-collections:<br>";
Print "<font size='5pt'><a href='/board/index/".$info['id']."'>".$info['board_name']." </a></font>";
}
?>
これはうまくいきます。
ここで、親ボードに名前を付けるために同様のコードを書きたいと思います (ボードがサブの場合) が、ここで問題が発生します。
私が思いついた:
<?php
$data = mysql_query("select * from board WHERE id='$boardId' AND sub_id IS NOT NULL") or die(mysql_error());
$issub = mysql_fetch_array($data);
?>
それから使用して...
<?php if(($issub)): ?>
<?php echo $issub['sub_id'] ?>
<?php else: ?>
<?php endif ?>
表示する。
問題は、親ボードjoin
の 以外は表示できません。などid
の情報を抽出するためにどの列に参加すればよいかわかりません。board_name
編集:
popovitsj の提案:
<?php
$data = mysql_query("SELECT * FROM board b WHERE EXISTS(SELECT * FROM board WHERE b.id = sub_id)") or die(mysql_error());
while($info = mysql_fetch_array( $data ))
{
Print "<br>Sub-collection of:<br>";
Print "<font size='5pt'><a href='/board/index/".$info['id']."'>".$info['board_name']." </a></font>";
}
?>
これはある程度機能します。親ボードはサブボード ページに正しく表示されますが、親ボード ページにも誤って表示されます。
EDIT2:
Meier の提案で LEFT JOIN を調査した後、最終的に次のコードを使用して動作するようになりました。
SELECT * FROM board a LEFT JOIN board b ON a.sub_id = b.id WHERE a.sub_id LIKE b.id AND a.id='$boardId'