Ir para conteúdo
Fórum Script Brasil
  • 0

Dúvida na instrução UPDATE


fsb30

Pergunta

Prezados, estou com um problema sem solução pro meu nível de conhecimento.

Tenho uma tabela com resultados de partidas de futebol. Img 01

A cada nova rodada dos campeonatos os dados são importados para ela.

Logo após a inserção de dados via importação preciso que algumas informações sejam atualizadas noutra tabela. Img02.

Fiz um simples script para fazer o UPDATE na tabela da Img02

use Futebol

update Estatisticas
set TPH = (
    SELECT  SUM (a.PointsHome)
    FROM bet365 a
    where 
        a.Country like 'England'
    and    a.League like 'Premier League'
    and    a.Season like '2018/2019'
    group by  a.Country, a.Season, a.League, a.TeamHome)

from bet365 b INNER JOIN Estatisticas e 
on e.Team LIKE b.TeamHome
and b.Country LIKE e.Country
and b.Season LIKE e.Season
and b.League LIKE e.League

    WHERE b.Country like 'England'
        and b.League like 'Premier League'
        and b.Season like '2018/2019'

O retorno é o seguinte:

Msg 512, Level 16, State 1, Line 3
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
The statement has been terminated.

De acordo com a tabela bet365, todos os times jogam como HOME (em casa) e como VISIT (fora de casa). Automaticamente as equipes fazem pontos ou não, fazem e sofrem gols ou não,  em cada jogo em casa e/ou fora de casa. Preciso atualizar a tabela de Estatisticas a cada rodada. Essa tabela é responsável por armazenar dados compilados da tabela principal, chamada bet365.

O que pretendo com esse update é pegar a SOMA dos pontos que os times estão fazendo acumuladamente naquele momento do campeonato (tabela bet365 - Img 01 ) e atualizar essa informação 

no respectivo campo da tabela Estatisticas - Img 02.

Antecipadamente agradeço a ajuda!

Img01.png

Img02.png

Editado por fsb30
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Vamos la Senhor temos alguns erros nesta consulta.

use Futebol

update Estatisticas
set TPH = (
 
   SELECT  SUM (a.PointsHome)
    FROM bet365 a
    where 
        a.Country like 'England'
    and    a.League like 'Premier League'
    and    a.Season like '2018/2019'
    group by  a.Country, a.Season, a.League, a.TeamHome
) --- Este agrupamento faz com que a subquery traga diversas linhas com valores diferentes para cada agrupamento e isso não é permitido pelo sql server então arranque o group by da qui

Já na parte do join eu intendi que você quer usar o operador like algo que eu não recomendo por ser muiiiiiiiiiiiiiiiiiiiiiiiiitttttttttttttto lento e nada performático mas como você liga os registros? alem do like você precisa ligar os campo com relação. CHAVE primaria com chave estrangeira, chave primaria com chave unica etc.

Atenciosamente,

Marcos Roberto.

 

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...