Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

srnalim

[Resolvido] Contar registros iguais de tabelas diferentes

Recommended Posts

Bom galera preciso da ajuda de vocês estou montando um site de classificados, onde a empresa seleciona uma categoria e anuncia só que eu preciso contar quantos anúncios de empresas a em cada categoria e não quero montar gambiarras como geralmente eu monto.

 

Mais ou menos assim

 

anuncio

id

img

cat

emp

status

...

 

categoria

id

cat_nome

status

 

Quando exibir vai aparecer "Categoria x (quantidade)" onde está a quantidade eu preciso da quantidade de anúncios cadastrados na categoria.

 

Aguardo atenciosamente e agradeço desde já galera.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sugiro mudar a tabela referente ao anuncio

 

anuncio

id

img

cat -> colocar 'id_cat' e relacionar com tabela referente a categoria

...

 

Onde id_cat seria a FK (chave estrangeira) referindo-se ao 'id' na tabela categoria.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim poderia ser também mas a questão é mesmo que seja um estrangeira como contar o total de registros quando uma for igual a da outra tabela a minha gambiarra seria mais ou menos assim porem acredito que não daria certo.

 

<?php
$consulta = mysql_query("SELECT nome da categoria FROM categoria")
$con = mysql_fetch_array($consulta);
$catnome = $con['cat_nome'];
?>

 

Ai eu teria que criar uma outra consulta para anúncios para criar outra variável pra depois criar uma terceira consulta já filtrando com WHERE para mostrar somente quando os dados fossem iguais, porém quando uso o mysql_num_rows ele me passa um erro e de qualquer forma assim fica muito código para uma função boba acredito eu né não sou nenhum gênio em php.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não vejo motivos para fazer essas gambiarras.

Sugiro você pesquisar sobre

:

-inner join;

-left join;

-right join;

 

Tenho certeza que aprendendo a utilizá-las será muito

mais produtivo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta assim

Select  *, (Select Count(*) From categoria Where id = t1.cat) From anuncio t1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agradeço a todos consegui fazer o código aqui ai fica caso alguem precise:

 


<table>
<tr>
<?php

$concat =  mysql_query("SELECT * FROM cat ORDER BY id ASC");
$cpra_cat = mysql_fetch_array($concat);
$ct = $cpra_cat['cat'];


$ConectaCat = mysql_query("SELECT * FROM cat ORDER BY id ASC");
while ($cat = mysql_fetch_array($ConectaCat)) {
$ct = $cat['cat'];

$conta = mysql_query("SELECT * FROM cadastro WHERE cad_cat = '$ct' ");
$total = mysql_num_rows($conta);
?>

<td><?php echo $cat['cat'];?></td><td>(<?php echo $total; ?>)</td>

<?php } ?>		
<tr>
</table> 

Compartilhar este post


Link para o post
Compartilhar em outros sites

<table>

<tr>

<?php

 

$concat = mysql_query("SELECT * FROM cat ORDER BY id ASC");

$cpra_cat = mysql_fetch_array($concat);

$ct = $cpra_cat['cat'];

 

 

$ConectaCat = mysql_query("SELECT * FROM cat ORDER BY id ASC");

while ($cat = mysql_fetch_array($ConectaCat)) {

$ct = $cat['cat'];

 

$conta = mysql_query("SELECT * FROM cadastro WHERE cad_cat = '$ct' ");

$total = mysql_num_rows($conta);

?>

 

<td><?php echo $cat['cat'];?></td><td>(<?php echo $total; ?>)</td>

 

<?php } ?>

<tr>

</table>

 

desse geito teria dado certo

<table>
  <tr>
     <?
       $Qry = mysql_query(Select *, (Select Count(*) From cat Where id = t1.cad_cat) as total From cadastro t1);
       while($Mst = mysql_fetch_array($Qry)){
      ?>
      <td><?php echo $Mst['cat']?></td><td>(<?php echo $Mst['total']?>)</td>
      <? }?>
  <tr>
</table>

 

 

isso ai em cima que você fez foi um gambiarra.

do modo que eu fiz diminuio umas 10 linhas

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.