Get data using join in two table 1 for many

0

Good morning,

I need to perform a select of two tables that are related 1 to many:

Table 1: Products Table 2: Price group

I need to get all prices in the price group table, which can be 1 or more.

In my case of the select below it even picks up the prices most repeats all the data as if it were another product, how can I make each products come already with all the prices corresponding to it?

I'm using Codeigniter, below the select I'm currently using.

$this->db->select('produtos.*, grupo_preco_produtos.grupo_preco_venda');
$this->db->from('produtos');
$this->db->join('grupo_preco_produtos', 'grupo_preco_produtos.id_produto = produtos.id');
$this->db->where(array('produtos.id_empresa' =>$id_empresa, 'produtos.del' => 0, 'produtos.tipo_produto' => 1,));
$query = $this->db->get();
return $query->result();
    
asked by anonymous 20.02.2017 / 15:04

2 answers

1

In this case you use the GROUP_CONCAT .

Your Query would look like this:

SELECT produtos.*, GROUP_CONCAT(grupo_preco_produtos.grupo_preco_venda SEPARATOR ', ')
FROM produtos
INNER JOIN grupo_preco_produtos ON grupo_preco_produtos.id_produto = produtos.id
WHERE produtos.id_empresa = '.$id_empresa.' AND produtos.del = 0 AND produtos.tipo_produto = 1
GROUP BY produtos.id;

Another tip I give you is to name your tables when using join's, this same query would look like this:

SELECT a.*, GROUP_CONCAT(b.grupo_preco_venda SEPARATOR ', ')
FROM produtos a
INNER JOIN grupo_preco_produtos b ON b.id_produto = a.id
WHERE a.id_empresa = '.$id_empresa.' AND a.del = 0 AND a.tipo_produto = 1
GROUP BY a.id;
    
20.02.2017 / 15:14
1

You can add GROUP_CONCAT to your query:

$this->db->select('produtos.*, GROUP_CONCAT(grupo_preco_produtos.grupo_preco_venda SEPARATOR ",") as grupo_preco_venda');
$this->db->group_by('produtos.id');
    
20.02.2017 / 15:21