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