Listar com tabelas relacionais [Duvida]

SQL

MySQL

PHP

27/04/2017

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.
<?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

Mauricio Mikulski

Curtidas 0

Respostas

Marcio Souza

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

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

Luiz Santos

27/04/2017

Mauricio, altere aqui:


$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
POSTAR