Я пытаюсь получить информацию из таблицы.Какой JOIN использовать
У меня есть доски и поддоны. Столбец sub_id
в таблице board
говорит мне, является ли доска поддоном или нет. Если это подпанель, то id
родительской платы является значением, если она не является, то ячейка равна нулю.
Я написал это, чтобы показать, имеет ли плата любые суб-платы:
<?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
и т.д.
EDIT: предложение
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:
После исследования 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'
Немного путайте, что вы вызываете столбец, который ссылается на родительскую sub_board. Вы должны были бы назвать его parent_board. – wvdz
Нелегко понять, как выглядят ваши таблицы. Не могли бы вы прояснить ситуацию? – daker
Это не так. Это 'sub_id'. Я хотел иметь возможность сделать это как можно меньше столбцов. –