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.
Uma pesquisa em sql puro
Moderador: Moderadores
-
marcos.gurupi
- Usuário Nível 4

- Mensagens: 939
- Registrado em: 06 Jul 2004 11:53
- Localização: Gurupi-TO
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Re: Uma pesquisa em sql puro
Marcos, tenta o seguinte:
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,
Código: Selecionar todos
SELECT Nome_ep1, sum(Gol_ep1) FROM nomedatabela GROUP BY Nome_ep1Obs.: para retornar a soma dos gols da equipe 2 (Nome_ep2), troque os nomes dos campos.
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
-
marcos.gurupi
- Usuário Nível 4

- Mensagens: 939
- Registrado em: 06 Jul 2004 11:53
- Localização: Gurupi-TO
Re: Uma pesquisa em sql puro
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.
Marcos Roberto.
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
NetService Software
NetService Software
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Re: Uma pesquisa em sql puro
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,
Só adiantando, você poderia usar o parâmetro LIMIT no comando abaixo, para pegar apenas os dois primeiros colocados:
Código: Selecionar todos
SELECT MAX(PONTOS)FROM EQUIPES WHERE GRUPO='A' LIMIT 2;Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Re: Uma pesquisa em sql puro
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
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
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/