Listar com tabelas relacionais [Duvida]
Olá, gostaria de uma ajuda, estou tendo dificuldades com uma query, já pesquisei em diversos lugares e não encontrei...
Tenho duas tabelas 'loja' e 'cliente', cada cliente pertence a uma loja, queria listar o nome das lojas da tabela 'loja' e a quantidade de clientes de cada loja.
Alguém pode me ajudar ?
Tentei desta forma, mas lista a mesma loja mais de uma vez e 1 registo para cada linha.
Tenho duas tabelas 'loja' e 'cliente', cada cliente pertence a uma loja, queria listar o nome das lojas da tabela 'loja' e a quantidade de clientes de cada loja.
Alguém pode me ajudar ?
Tentei desta forma, mas lista a mesma loja mais de uma vez e 1 registo para cada linha.
<?php $sql = "SELECT * FROM c_loja INNER JOIN c_user ON c_user.user_loja = c_loja.loja_id WHERE loja_id = user_loja"; $result = $PDO->query($sql); //$rows2 = $result->fetch(); $count=0; while($rows = $result->fetch(PDO::FETCH_OBJ)){ $count = count($rows); echo " <tr> <td>".$rows->loja_nome."</td> <td>".$count."</td> </tr> "; } ?>
Mauricio Mikulski
Curtidas 0
Respostas
Marcio Souza
27/04/2017
Você precisa usar um Group By para agrupar por loja e depois calcular o numero de cliente por cada loja com um Count. Algo mais ou menos assim
SELECT l.nome_loja, count(c.id_cliente) FROM loja l, cliente c WHERE l.id_loja = c.id_loja_fk GROUP BY l.id_loja;
GOSTEI 0
Mauricio Mikulski
27/04/2017
Você precisa usar um Group By para agrupar por loja e depois calcular o numero de cliente por cada loja com um Count. Algo mais ou menos assim
SELECT l.nome_loja, count(c.id_cliente) FROM loja l, cliente c WHERE l.id_loja = c.id_loja_fk GROUP BY l.id_loja;
Não deu ainda...
Olha como fucou...
<?php $sql = "SELECT *,count(user_id) FROM c_loja,c_user WHERE user_loja=loja_id GROUP BY loja_id"; $result = $PDO->query($sql); //$rows2 = $result->fetch(); $count=0; while($rows = $result->fetch(PDO::FETCH_OBJ)){ $count = count($rows->user_id); echo " <tr> <td>".$rows->loja_nome."</td> <td>".$count."</td> </tr> "; } ?>
Está imprimindo desta forma:
Loja1 1
Loja 2 1
Sendo que, eu tenho 3 lojas cadastradas e na loja1 tem 2 clientes.
GOSTEI 0
Luiz Santos
27/04/2017
Mauricio, altere aqui:
Veja se funciona.
Grande abraço
$sql = "SELECT loja_id, count(user_id) AS qtd FROM c_loja,c_user WHERE user_loja=loja_id GROUP BY loja_id";
Veja se funciona.
Grande abraço
GOSTEI 0