Consulta por jogos

moriva

Power Member
Oi!!
Quero fazer uma consulta por numero de jogos de cada equipa.

A minha ideia é colocar numa tabela o nome da equipa e o numero de jogos correspondente.
Espero que tenham percebido e me ajudem.
O meu código dá erro e é o seguinte:

Código:
<html>
<head>
</head>
<body>
    <?php
       require_once('connect.php');
       $sql = 'SELECT COUNT(DISTINCT Equipa1) AS Numero_Jogos , COUNT(DISTINCT Equipa2) as Numero_Jogos2 FROM andebol GROUP BY Equipa1,Equipa2 order by Numero_Jogos desc';       
       $result=mysql_query($sql);  
    ?>
      <form class="tituloFormulario" name="fr_melhor">
     <table class="tabelaCentrada" id="tabela">
          <tr>
          <td>Nome Equipa</td>
          <td>Numero Jogos</td>
          <td>Nome Equipa</td>
          <td>Numero Jogos</td>
          </tr>
          <?php while ($row = mysql_fetch_array ($result)){ ?> 
          <tr>
          <td><?php echo $row['Equipa1']; ?></td>
          <td><?php echo $row['Numero_Jogos']; ?></td>
          <td><?php echo $row['Equipa2']; ?></td>
          <td><?php echo $row['Numero_Jogos2']; ?></td>
          </tr>
          <?php
            }
            ?>
        </table>
        <a href="listar_registos_andebol.php">Listar Registos</a>
        </form>
</body>
</html>

Cumprimentos!!
 
Boas,

Tens que por aqui a tabela da base de dados, com exemplo de registos.. para que possa analisar melhor.. :)
 
A tabela é essa:

Código:
CREATE TABLE IF NOT EXISTS `andebol` (
  `Cod_Jogo` bigint(20) NOT NULL auto_increment,
  `Tipo` varchar(20) NOT NULL default '',
  `Data` date NOT NULL default '0000-00-00',
  `Hora` time NOT NULL default '00:00:00',
  `Local` varchar(20) NOT NULL default '',
  `Equipa1` varchar(50) NOT NULL default '',
  `Equipa2` varchar(50) NOT NULL default '',
  `Periodo1Equipa1` int(50) NOT NULL default '0',
  `Periodo1Equipa2` int(50) NOT NULL default '0',
  `Periodo2Equipa1` int(50) NOT NULL default '0',
  `Periodo2Equipa2` int(50) NOT NULL default '0',
  `FinalEquipa1` int(50) NOT NULL default '0',
  `FinalEquipa2` int(50) NOT NULL default '0',
  PRIMARY KEY  (`Cod_Jogo`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=72 ;
 
Última edição pelo moderador:
Isso não é para listar apenas a quantidade de jogos de cada equipa?

Por ex:

Benfica: 2jogos
Porto: 4jogos
Sporting: 1jogos

...
 
Preciso que me esclareças se queres diferenciar de jogos fora e jogos casa, porque vejo ai que tens 4 colunas, ou queres os jogos no total?
 
É jogos no total e quando existem equipas repetidas agrupa e mostra o numero de jogos.
Por isso é que eu utilizei o DISTINCT...

Percebes-te??

Obrigado.
 
O erro é este:
Notice
: Undefined index: Equipa1 in c:\programas\easyphp1-8\www\pat\consulta_jogos_andebol.php on line 25

Código:
<html>
<head>
</head>
<body>
    <?php
       require_once('connect.php');
       $sql = 'SELECT COUNT(DISTINCT Equipa1) AS Numero_Jogos , COUNT(DISTINCT Equipa2) as Numero_Jogos2 FROM andebol GROUP BY Equipa1,Equipa2 order by Numero_Jogos desc';       
       $result=mysql_query($sql);  
    ?>
      <form class="tituloFormulario" name="fr_melhor">
     <table class="tabelaCentrada" id="tabela">
          <tr>
          <td>Nome Equipa</td>
          <td>Numero Jogos</td>
          <td>Nome Equipa</td>
          <td>Numero Jogos</td>
          </tr>
          <?php while ($row = mysql_fetch_array ($result)){ ?> 
          <tr>
[COLOR=Red]linha 25  <td><?php echo $row['Equipa1']; ?></td>[/COLOR]
          <td><?php echo $row['Numero_Jogos']; ?></td>
          <td><?php echo $row['Equipa2']; ?></td>
          <td><?php echo $row['Numero_Jogos2']; ?></td>
          </tr>
          <?php
            }
            ?>
        </table>
        <a href="listar_registos_andebol.php">Listar Registos</a>
        </form>
</body>
</html>

Sabes o que se passa???
 
Sim, isso tem a ver com as configurações do easyphp, porque eu experimentei num alojamento normal e não dá erro, apenas nao mostra o que queres, mas mostra alguma coisa :p
 
Ja consegui constrir a consulta que pretendia:

Consulta sql:
Código:
SELECT COUNT(*)
FROM andebol
WHERE ((Equipa1="NomeEquipa") Or  (Equipa2="NomeEquipa"));
Isto mostra quantos jogos fez cada equipa.
Mas, eu queria que aparecesse numa coluna o nome de todas as equipas e noutra coluna o numero de jogos.

:confused:
 
Boas, utiliza a cláusula GROUP BY. Alternativamente, podes utilizar a query que já tens para cada equipa.

Nao percebi muito bem o que querias dizer. Podes dar um exemplo ou algo parecido para eu perceber melhor.
 
Algo deste género:

Código:
SELECT Equipa, COUNT(*)
FROM ( 
         SELECT Equipa1 AS Equipa
         FROM andebol
         UNION ALL
         SELECT Equipa2 AS Equipa
         FROM andebol 
       ) AS U
GROUP BY Equipa
 
Back
Topo