Liurai 0 Denunciar post Postado Agosto 7, 2010 CREATE TABLE IF NOT EXISTS `jogos` ( `idJogo` bigint(20) NOT NULL AUTO_INCREMENT, `Data` datetime NOT NULL, `EquipaCasa` varchar(255) NOT NULL, `EquipaFora` varchar(255) NOT NULL, PRIMARY KEY (`idJogo`), KEY `idCompeticao` (`idCompeticao`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ; CREATE TABLE IF NOT EXISTS `eventos` ( `idEvento` bigint(20) NOT NULL AUTO_INCREMENT, `Minuto` smallint(6) NOT NULL, `idTipoEvento` tinyint(4) NOT NULL, `idJogo` bigint(20) NOT NULL, PRIMARY KEY (`idEvento`), KEY `idJogo` (`idJogo`), KEY `idTipoEvento` (`idTipoEvento`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ; Oi Estou com um problema que já dei muitas voltas e não consigo resolver numa única query A tabela "jogos" guarda jogos de futebol de vários campeonatos. A estrutura que interessa está aí e tirei todos os campos que não interessam para este caso. A tabela "eventos" guarda todos os eventos que ocorrem num jogo: Minuto - O minuto a que o evento ocorreu idTipoEvento - Foreign Key com a tabela de Tipos de Eventos, onde o idTipoEvento 1="Golo da Equipa Visitada", 2="Golo da Equipa Visitante" 3="Expulsão Equipa Visitada" 4="Expulsão Equipa Visitante" idJogo - Foreign Key que liga com a tabela dos "jogos" A query que preciso tem de contar por exemplo: "Quantidade de jogos onde o resultado aos 26 minutos estava 2-1" Ou seja, o número de jogos em que antes do minuto 26 houve 2 eventos com idTipoEvento=1 e 1 evento com idTipoEvento=2. Dei muitas voltas mas ainda não consegui. Parece-me que têm de existir algumas subqueries e alguns GROUP BY. Alguma ajudinha era muito apreciada. Obrigado http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Compartilhar este post Link para o post Compartilhar em outros sites
Liurai 0 Denunciar post Postado Agosto 7, 2010 Depois de mais alguns testes, acabei por descobrir :D Já agora para quem ficou curioso, resolvi assim SELECT * FROM jogos WHERE (SELECT COUNT(*) FROM eventos WHERE jogos.idJogo=eventos.idJogo and idTipoEvento=1 and minuto<=26)=2 AND (SELECT COUNT(*) FROM eventos WHERE jogos.idJogo=eventos.idJogo and idTipoEvento=2 and minuto<=26)=1 Afinal era mais simples do que estava a pensar ;) Compartilhar este post Link para o post Compartilhar em outros sites