Таблица магазинов: < /p>
+--+-------+--------+
|id|name |date |
+--+-------+--------+
|1 |x |March 10|
+--+-------+--------+
|2 |y |March 10|
+--+-------+--------+
< /code>
Таблица категории: < /p>
+--+-------+
|id|title |
+--+-------+
|1 |tools |
+--+-------+
|2 |foods |
+--+-------+
< /code>
Таблица категорий магазинов (shop_cats): < /p>
+--+-------+--------+
|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>
+--+-------+--------+
|id|shop_id|cat_id |
+--+-------+--------+
|1 |1 |1 |
+--+-------+--------+
|2 |1 |2 |
+--+-------+--------+
< /code>
Если я хочу, чтобы магазины с (1,2) категория Я получаю магазин с id = 1, дважды.
Я хочу, чтобы он вернул каждый магазин только один раз без дубликата. 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);
}
< /code>
Но я получаю синтаксисную ошибку!
Подробнее здесь: https://stackoverflow.com/questions/141 ... -two-table
Отчетливо/присоединяйтесь к двум таблицам ⇐ Php
Кемеровские программисты php общаются здесь
1745028516
Anonymous
Таблица магазинов: < /p>
+--+-------+--------+
|id|name |date |
+--+-------+--------+
|1 |x |March 10|
+--+-------+--------+
|2 |y |March 10|
+--+-------+--------+
< /code>
Таблица категории: < /p>
+--+-------+
|id|title |
+--+-------+
|1 |tools |
+--+-------+
|2 |foods |
+--+-------+
< /code>
Таблица категорий магазинов (shop_cats): < /p>
+--+-------+--------+
|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>
+--+-------+--------+
|id|shop_id|cat_id |
+--+-------+--------+
|1 |1 |1 |
+--+-------+--------+
|2 |1 |2 |
+--+-------+--------+
< /code>
Если я хочу, чтобы магазины с (1,2) категория Я получаю магазин с id = 1, дважды.
Я хочу, чтобы он вернул каждый магазин только один раз без дубликата. 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);
}
< /code>
Но я получаю синтаксисную ошибку!
Подробнее здесь: [url]https://stackoverflow.com/questions/14110251/distinct-join-two-table[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия