Я испорчу это левое соединение - PullRequest
1 голос
/ 25 мая 2010

Я делаю левое соединение на нескольких столах. Я хочу, чтобы в нем были перечислены все предприятия. Затем он просматривает фотографии, видео, специальные предложения и категории. Если есть фотографии, то в таблицах отображается «да», если есть видео, в таблице отображается «да».

Он делает все это без проблем. За исключением одного. Для каждой фотографии это показывает бизнес, который много раз. Например, если в базе данных есть 5 фотографий для бизнеса, это показывает бизнес пять раз.

Очевидно, это не то, что я хочу, чтобы произошло. Вы можете помочь?

function frontPageList() {
    $this->db->select('b.id, b.busname, b.busowner, b.webaddress, p.thumb, v.title, c.catname');
    $this->db->from ('business AS b');
    $this->db->where('b.featured', '1');
    $this->db->join('photos AS p', 'p.busid = b.id', 'left');
    $this->db->join('video AS v', 'v.busid = b.id', 'left');
    $this->db->join('specials AS s', 's.busid = b.id', 'left');
    $this->db->join('category As c', 'b.category = c.id', 'left');
    return $this->db->get();

Ответы [ 2 ]

1 голос
/ 25 мая 2010

, если вам не нужны сами фотографии или какие они захватывают, вы можете попробовать добавить на GROUP BY b.id

0 голосов
/ 25 мая 2010

Объединение умножит количество строк, если будет найдено более одного совпадения. Если это не то, что вам нужно, вы должны либо начать с подсчета, а затем запросить каждую таблицу отдельно для фактических строк, или вам следует выполнить группировку в коде, основываясь на изменении значений business.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...