Отчетливо/присоединяйтесь к двум таблицамPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Отчетливо/присоединяйтесь к двум таблицам

Сообщение 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>

Но я получаю синтаксисную ошибку!

Подробнее здесь: https://stackoverflow.com/questions/141 ... -two-table
Ответить

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

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

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

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

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