1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Consulta por jogos

Discussão em 'Web Development' iniciada por moriva, 13 de Junho de 2008. (Respostas: 15; Visualizações: 889)

  1. moriva

    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!!
     
  2. wack

    wack Power Member

    Boas,

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

    moriva Power Member

    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: 16 de Junho de 2008
  4. wack

    wack Power Member

    Isso não é para listar apenas a quantidade de jogos de cada equipa?

    Por ex:

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

    ...
     
  5. moriva

    moriva Power Member

    Sim. É isso mesmo mas a consulta dá erro.

    Consegues saber o que se passa.

    Obrigado!!
     
  6. wack

    wack Power Member

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

    moriva Power Member

    É 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.
     
  8. wack

    wack Power Member

    Mas isso não tar a dar erro.....

    Não tá é a fazer o que tu queres....
     
  9. wack

    wack Power Member

    A noite quando chegar a casa, vejo isso melhor.....
     
  10. moriva

    moriva Power Member

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

    wack Power Member

    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
     
  12. moriva

    moriva Power Member

    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:
     
  13. AliFromCairo

    AliFromCairo Power Member

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

    moriva Power Member

    Nao percebi muito bem o que querias dizer. Podes dar um exemplo ou algo parecido para eu perceber melhor.
     
  15. AliFromCairo

    AliFromCairo Power Member

    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
    
     
  16. moriva

    moriva Power Member

    Era mesmo isso que eu queria.

    Muito Obrigado!!

    :001::001::001:
     

Partilhar esta Página