+--+-------+--------+
|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 цитирует различное ключевое слово, как это имя столбца.
$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); } [/code] Но я получаю ошибку синтаксиса, потому что Codeigniter цитирует различное ключевое слово, как это имя столбца.
Я искал, и у меня не было полного успеха, пытаясь создать этот запрос, чтобы правильно отобразить результаты. Достаточно сказать, что я ищу небольшую помощь, обернув голову вокруг структуры, которую я могу использовать. По сути, у меня есть таблица...
Я в довольно распространенной ситуации, но я изо всех сил пытаюсь выяснить, как именно достичь того, что я хочу, взглянув на документацию Knex. В реляционной модели это обычно представлено таблицей, содержащей композитный ключ, ссылаясь на ключи...
У меня есть модели Place, User со связью многие-ко-многим в качестве сводной таблицы/модели с именем Reservation, мне нужно было создать новую связь между сводной таблицей и другой таблица с именем резервирование_статусы, чтобы связать каждое...
У меня есть модели Place, User со связью многие-ко-многим в качестве сводной таблицы/модели с именем Reservation, мне нужно было создать новую связь между сводной таблицей и другой таблица с именем резервирование_статусы, чтобы связать каждое...
Я пытаюсь создать связь sqlalchemy между двумя таблицами, основанную на значении другой таблицы. Моя таблица UserSports связана с таблицей бейсбола (а также другими видами спорта, в которые они, возможно, играли). У меня также есть таблица...