Página 1 de 1
Uma pesquisa em sql puro
Enviado: 28 Jun 2010 21:14
por marcos.gurupi
Eu tenho um tabela por exemplo com a seguinte estrutura:
Nome_eq1 | Gol_eq1 | Nome_eq2 | Gol_eq2
Entaum eu quero percorrer essa tabela e saber quantas vezes aparece o nome
de uma equipe e quantos gols ele fez. Isso em codigo SQL! Alguem saberia fazer isso em codigo SQL?
Marcos Roberto.
Re: Uma pesquisa em sql puro
Enviado: 29 Jun 2010 10:30
por Toledo
Marcos, tenta o seguinte:
Código: Selecionar todos
SELECT Nome_ep1, sum(Gol_ep1) FROM nomedatabela GROUP BY Nome_ep1
Esta query vai retornar uma tabela com o nome da equipe e a soma dos gols.
Obs.: para retornar a soma dos gols da equipe 2 (Nome_ep2), troque os nomes dos campos.
Abraços,
Re: Uma pesquisa em sql puro
Enviado: 30 Jun 2010 18:03
por marcos.gurupi
Caro Toledo me ajuda no seguinte projeto. Estou querendo pegar em uma tabela por exemplo a selecao que mais fez pontos em seus grupos, ou seja, pegar o primeiro e o segundo do grupo A, primeiro e o segundo do grupo B e imprimir isso. Estou usando o codigo abaixo para imprimir a tabela com o seus pontos e grupos, estou tentando filtrar isso em uma variavel mas nao estou tento sucesso.
Código: Selecionar todos
SELECT ID,GRUPO,PAIS,
@J:=(SELECT COUNT(*) FROM jogos WHERE EQUIPE1 = ID OR EQUIPE2 = ID) JOGOS
,@V:=(SELECT COUNT(*) FROM jogos WHERE EQUIPE1 = ID AND GOLS_E1>GOLS_E2)
+(SELECT COUNT(*) FROM jogos WHERE EQUIPE2 = ID AND GOLS_E2>GOLS_E1) VITORIAS
,@D:=(SELECT COUNT(*) FROM jogos WHERE EQUIPE1 = ID AND GOLS_E1<GOLS_E2)
+(SELECT COUNT(*) FROM jogos WHERE EQUIPE2 = ID AND GOLS_E2<GOLS_E1) DERROTAS
,@E:=(@J-(@V+@D)) EMPATES
,@P:=((@V*3)+@E) PONTOS
,@GP:=((SELECT SUM(GOLS_E1) FROM jogos WHERE EQUIPE1 = ID)+(SELECT SUM(GOLS_E2) FROM jogos WHERE EQUIPE2 = ID)) GP
,@GC:=((SELECT SUM(GOLS_E2) FROM jogos WHERE EQUIPE1 = ID)+(SELECT SUM(GOLS_E1) FROM jogos WHERE EQUIPE2 = ID)) GC
,ROUND(@GP-@GC,0) SG,CONCAT(ROUND((@P/9)*100,1),'%') APROVEITAMENTO
,@1GA:= (SELECT MAX(PONTOS)FROM EQUIPES WHERE GRUPO='A')1GA //AQUI ELE NAO DEVERIA IMPRIMIR SOMENTE AS EQUIPES COM MAIORES PONTOS DO GRUPO A ?
,@1GB:= (SELECT MAX(PONTOS)FROM EQUIPES WHERE GRUPO='B')1GB
FROM equipes ORDER BY GRUPO ASC,PONTOS DESC, SG DESC, VITORIAS DESC, GP DESC
Marcos Roberto.
Re: Uma pesquisa em sql puro
Enviado: 01 Jul 2010 15:57
por Toledo
Olá Marcos, estou com uma viagem marcada para hoje a noite e só retornarei no domingo, então agora não tem como fazer um exemplo para você. Mas me passe a estrutura das tabelas JOGOS e EQUIPES que na segunda eu lhe dou um retorno.
Só adiantando, você poderia usar o parâmetro LIMIT no comando abaixo, para pegar apenas os dois primeiros colocados:
Abraços,
Re: Uma pesquisa em sql puro
Enviado: 01 Jul 2010 18:07
por JoséQuintas
Talvez ache esquisito eu falar isso, mas meu conhecimento SQL ainda é limitado.
Testaria estes:
SELECT SUM(TOTGOLS) FROM ( SELECT SUM(GOLS1) AS TOTGOLS FROM TABELA WHERE TIME1="OTIME"
UNION ALL
SELECT SUM(GOLS2) AS TOTGOLS FROM TABELA WHERE TIME2="OTIME" )
ou isto:
SELECT SUM( IIF(TIME1="OTIME",GOLS1,0) + IIF(TIME2="OTIME",GOLS2,0) ) AS TOTGOLS FROM TABELA
Ou ainda:
Ter um VIEW, e criar a pesquisa nesse VIEW, mas isto depende do banco de dados.
ou ainda:
O subselect do primeiro traz dois registros. Somar dois registros ainda seria aceitável.
Mas sabendo que é referente à copa, coisa de poucos registros, poderia até jogar para um Array, e trabalhar em memória.
Vi depois, é em ordem... então se aceitar subquery, seria algo mais neste estilo:
SELECT TIME, SUM(TOTGOLS) FROM ( SELECT TIME1 AS TIME, SUM(GOLS1) AS TOTGOLS FROM TABELA GROUP BY TIME1
UNION ALL
SELECT TIME2 AS TIME, SUM(GOLS2) AS TOTGOLS FROM TABELA GROUP BY TIME2 ) GROUP BY TIME ORDER BY TOTGOLS DESC