Completar consultas em mysql

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
 
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
 
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
 
Back
Topo