Я столкнулся с проблемой, которая, как мне кажется, несколько прост в принципе, поэтому я, возможно, не буду так поступить правильно. Я по существу перечисляю «события» на странице, которая имеет свои собственные «комментарии». Я присоединяюсь к двум таблицам и надеюсь запустить цикл foreach, чтобы получить все события вместе со своими комментариями. К сожалению, если событие имеет более одного комментария, оно перепечатывает исходное событие из-за соединения (я подозреваю). Какой лучший способ достичь того, чего я пытаюсь достичь?Удаление повторяющихся записей из Присоединиться
В моей модели:
function get_events()
{
$this->db->select('*');
$this->db->from('events');
$this->db->join('comments', 'comments.event_id = events.id', 'left');
$query = $this->db->get();
if ($query->num_rows() > 0)
{
return $query->result();
}
}
И в представлении:
<?php foreach($events as $row): ?>
<div class="event">
<?= $row->event; ?>
<?php if($row->comment == null): ?><br>
<i>No comments.</i>
<?php else: ?>
<div class="comment">
<?= $row->comment; ?>
</div>
<?php endif; ?>
</div>
<?php endforeach; ?>
В БД я в основном имеют 3 события, один с 2 комментариями, один только с 1, и один с нуля Комментарии. Первое событие печатается дважды, каждый с другим комментарием, второе событие отлично отпечатывается с собственным комментарием, а третий работает отлично, печатая «без комментариев», поскольку с ним ничего не связано.
Надеюсь, это все имеет смысл!
MT
Посмотрите на [различны] (http://dev.mysql.com/doc/refman/5.0/en/distinct -optimization.html) из документации mysql. ^^ – Jon
Это не решит проблему. Он имеет в каждой строке событие, а строки уникальны, поэтому разные не фильтруют ничего. –