Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Avatar do usuário
ADMIN
ADMIN
Tópico Autor
Mensagens: 17722
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Listar dados de uma tabela, contando dados de outra tabela

27-06-2013 20:26

Um problema muito comum, é quando temos uma tabela, e queremos além de listar os produtos dessa tabela, contar itens de outra tabela, relacionada a primeira, e listar tudo junto, na mesma consulta. Veja a situação abaixo:

tb1
id nome
1 v1
2 v2

Temos nessa primeira tabela, tb1, 2 itens diferentes, vamos se basear no id, que é auto increment.

tb2
id ref
1 1
2 1
3 2

Agora, temos a tabela tb2, onde a coluna ref, está associada a coluna id da tabela tb1

Supondo que queremos listar os itens de tb1, e na mesma consulta, contar quantos itens tb2, tem, que está relacionado a tb1.

O resultado desejado é esse:

1:v1 - 2 linha(s)
2:v2 - 1 linha(s)

Temos o id 1:v1, que na tabela tb2, tem duas linhas ref, que é listado ao lado do resultado.
Tempos o 2:v2, que na tabela tb2, tem somente uma linha ref, também listado ao lado do resultado.

Para fazer isso, usamos a seguinte consulta:

$query=mysql_query("SELECT bd1.*, count(bd2.ref) AS quantos FROM bd1 LEFT JOIN bd2 ON bd1.id=bd2.ref GROUP BY bd1.id");

Para listar esses dados, é usado:

while($dados=mysql_fetch_array($query)) { extract($dados); echo "$id:$nome - $quantos <br />"; } 

Qualquer dúvida, só postar.
0
A melhor hospedagem para o seu site HostGator!
 
Avatar do usuário
ADMIN
ADMIN
Tópico Autor
Mensagens: 17722
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Listar dados de uma tabela, contando dados de outra tabela

28-06-2013 08:57

Para adicionar o WHERE e o ORDER BY na consulta com o LEFT JOIN, siga as regras a seguir:

O WHERE entre depois da linha do ON

ON bd1.id=bd2.ref
WHERE tabela.coluna='esse valor'

O ORDER BY entra depois do GROUP BY

GROUP BY bd1.id
ORDER BY tabela.coluna ASC
0
A melhor hospedagem para o seu site HostGator!

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado