Как предотвратить дубликаты родительских строк при присоединении к таблице с отношениями с одним ко многим в CodeigniterPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как предотвратить дубликаты родительских строк при присоединении к таблице с отношениями с одним ко многим в Codeigniter

Сообщение Anonymous »

Таблица:

Код: Выделить всё

+--+-------+--------+
|id|name   |date    |
+--+-------+--------+
|1 |x      |March 10|
+--+-------+--------+
|2 |y      |March 10|
+--+-------+--------+
< /code>
Таблица категорий магазинов (shop_cats
):

Код: Выделить всё

+--+-------+--------+
|id|shop_id|cat_id  |
+--+-------+--------+
|1 |1      |1       |
+--+-------+--------+
|2 |1      |2       |
+--+-------+--------+
< /code>
Я хочу получить магазины по категории (категории передаются через массив $ cat). < /p>
$this->db->select('shops.*');
$this->db->from('shops');
if (!empty($cat)) {
$this->db->join('shop_cats' , 'shop_cats.shop_id = shops.id' );
$this->db->where_in('shop_cats.cat_id', $cat);
}

$this->db->limit($limit, $offset);
$res = $this->db->get();
< /code>
Моя проблема в том, что он возвращает дубликаты результатов. < /p>
Например, в этой таблице < /p>
+--+-------+--------+
|id|shop_id|cat_id  |
+--+-------+--------+
|1 |1      |1       |
+--+-------+--------+
|2 |1      |2       |
+--+-------+--------+
< /code>
Если я хочу магазины с категорией 1 или 2, я получаю магазин с id = 1 дважды.
Я хочу, чтобы он вернул каждый магазин только один раз без каких -либо дубликатов. < /p>
Я пытался использовать группу по < /p>
if (!empty($cat)) {
$this->db->join('shop_cats' , 'shop_cats.shop_id = shops.id');
$this->db->group_by('shop_cats.shop_id');
$this->db->where_in('shop_cats.cat_id' , $cat);
}
< /code>
Это не сработало. Я также пробовал: < /p>
if (!empty($cat)) {
$this->db->select('DISTINCT shop_cats.shop_id');
$this->db->join('shop_cats', 'shop_cats.shop_id = shops.id');
$this->db->where_in('shop_cats.cat_id' , $cat);
}
Но я получаю ошибку синтаксиса, потому что Codeigniter цитирует различное ключевое слово, как это имя столбца.

Подробнее здесь: https://stackoverflow.com/questions/141 ... many-relat
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»