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

Completar consultas em mysql

Discussão em 'Programação' iniciada por moriva, 17 de Junho de 2008. (Respostas: 3; Visualizações: 739)

  1. moriva

    moriva Power Member

    Tenho esta tabela na minha base de dados:
    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;
    
    1º-Eu queria que mostrasse o nome de cada equipa apenas uma vez caso a equipa esteja em mais de que um registo.Mas isso ja esta feito com o código desta consulta:

    Código:
         SELECT Equipa
    FROM ( 
             SELECT Equipa1 AS Equipa
             FROM andebol
             UNION ALL
             SELECT Equipa2 AS Equipa
             FROM andebol 
           ) AS U
    GROUP BY Equipa;
    
    2º- O mais dificil é colocar a frente de cada equipa o numero de golos marcados e o numero de vitórias.

    Dica: Para perceberem melhor aconselho-vos a criar a tabela "andebol" no mysql ou phpmyadmin e a colocares alguns registos e experimentares a consulta acima.

    Estou a muito tempo a volta deste problema. Agradecia muito se me ajudassem.

    :p
     
  2. HLopes

    HLopes Power Member

    Não estou a perceber... Queres fazer isso em SQL puro?
     
  3. samahong

    samahong Power Member

    Não discutindo a tua modelação dos dados, será que isto devolve o que pretendes (acrescentei os golos sofridos e as derrotas)?

    Código:
    SELECT
    	Equipa, 
    	sum(golos_marcados) AS golos_marcados, 
    	sum(golos_sofridos) AS golos_sofridos,
    	sum(vitoria) AS n_vitorias,
    	sum(derrota) AS n_derrotas
    
    FROM
    	(
    	SELECT
    		Equipa1 AS Equipa, FinalEquipa1 AS golos_marcados,
    		FinalEquipa2 AS golos_sofridos,
    		CASE WHEN FinalEquipa1 > FinalEquipa2 THEN 1 ELSE 0 END AS vitoria,
    		CASE WHEN FinalEquipa1 < FinalEquipa2 THEN 1 ELSE 0 END AS derrota
    	FROM
    		andebol
    		
    	UNION ALL
    	
    	SELECT
    		Equipa2 AS Equipa, FinalEquipa2 AS golos_marcados,
    		FinalEquipa1 AS golos_sofridos,
    		CASE WHEN FinalEquipa2 > FinalEquipa1 THEN 1 ELSE 0 END AS vitoria,
    		CASE WHEN FinalEquipa2 < FinalEquipa1 THEN 1 ELSE 0 END AS derrota
    	FROM
    		andebol
    	) AS U
    GROUP BY
    	Equipa
     
  4. moriva

    moriva Power Member

    Era mesmo isso que eu pretendia. O nome das equipas e o numero de golos marcados e vitorias.

    E ainda acrescentaram o numero de derrotas e de golos sofridos. EXCELENTE!!!!

    Andava as voltas com este problema a muito tempo.Obrigado.:p:p:p:p:p:p:p:p
     

Partilhar esta Página