Resultados 1 a 8 de 8
  1. #1
    Membro Legacy's Avatar
    Data de Ingresso
    Aug 2015
    Posts
    186
    Thanks Thanks Given 
    0
    Thanks Thanks Received 
    7
    Thanked in
    6 Posts
    Mencionado
    6 Post(s)
    País
    Brazil

    Premiar Top 3 Devil Square

    Vim desafiar vcs q manjam de query.

    Preciso de uma query que selecione o top 3 no RankingDevilSquare
    [Somente membros podem ver os links. ]

    e dê:
    xx WCoinC ao top 1
    xy WCoinC ao top 2, na tabela CashShopData
    [Somente membros podem ver os links. ]

    e dê 1 ponto ao top 3 na table medal evento da coluna medalhas
    [Somente membros podem ver os links. ]

    OBS: tenho tentado a query abaixo, porém ela da erro.
    declare @AccountID varchar (10)declare @AccountID2 varchar (10)
    declare @AccountID3 varchar (10)


    declare @Name varchar(10)
    declare @Name2 varchar(10)
    declare @Name3 varchar(10)


    Select top 1 @AccountID=AccountID,@Name=Name from RankingDevilSquare order by Score_semanal desc, name desc
    Select top 1 @AccountID2=AccountID,@Name2=Name from RankingDevilSquare where Name<>@Name order by Score_semanal desc, name desc
    Select top 1 @AccountID3=AccountID,@Name3=Name from RankingDevilSquare where Name<>@Name and Name<>@Name2 order by Score_semanal desc, name desc

    Update CashShopData set WCoinC = WCoinC + 50, WCoinP = WCoinP + 500 where AccountID=@AccountID
    Update CashShopData set WCoinC = WCoinC + 20, WCoinP = WCoinP + 200 where AccountID=@AccountID2

    Update MK_MEDALHAS set medal_evento=1 where login=@AccountID3

    UPDATE RankingDevilSquare SET Score_semanal = 0

    ATT:

  2. #2
    Membro lockzao's Avatar
    Data de Ingresso
    Jan 2016
    Posts
    67
    Thanks Thanks Given 
    0
    Thanks Thanks Received 
    5
    Thanked in
    2 Posts
    Mencionado
    11 Post(s)
    MEU HUMOR
    Cool
    País
    Brazil
    Olá, tenta usar esse amigo.

    DECLARE @Name varchar(10)
    DECLARE @Name2 varchar(10)
    DECLARE @Name3 varchar(10)


    SELECT TOP 1 @Name=Name FROM RankingDevilSquare order by Score_Semanal desc, Name desc
    SELECT TOP 1 @Name2=Name FROM RankingDevilSquare where Name<>@Name order by Score_Semanal desc, Name desc
    SELECT TOP 1 @Name3=Name FROM RankingDevilSquare where Name<>@Name and Name<>@Name2 order by Score_Semanal desc, Name desc


    UPDATE dbo.[CashShopData] SET WCoinC=WCoinC+50 FROM dbo.[CashShopData]
    JOIN dbo.Character ON dbo.Character.AccountID = dbo.CashShopData.[AccountID]
    WHERE dbo.Character.Name=@Name


    UPDATE dbo.[CashShopData] SET WCoinC=WCoinC+30 FROM dbo.[CashShopData]
    JOIN dbo.Character ON dbo.Character.AccountID = dbo.CashShopData.[AccountID]
    WHERE dbo.Character.Name=@Name2


    UPDATE dbo.[CashShopData] SET WCoinC=WCoinC+10 FROM dbo.[CashShopData]
    JOIN dbo.Character ON dbo.Character.AccountID = dbo.CashShopData.[AccountID]
    WHERE dbo.Character.Name=@Name3


    UPDATE dbo.[MK_MEDALHAS] SET medal_evento=medal_evento+1 FROM dbo.[CashShopData]
    JOIN dbo.Character ON dbo.Character.AccountID = dbo.CashShopData.[AccountID]
    WHERE dbo.Character.Name=@Name


    UPDATE dbo.[MK_MEDALHAS] SET medal_evento=medal_evento+1 FROM dbo.[CashShopData]
    JOIN dbo.Character ON dbo.Character.AccountID = dbo.CashShopData.[AccountID]
    WHERE dbo.Character.Name=@Name2


    UPDATE dbo.[MK_MEDALHAS] SET medal_evento=medal_evento+1 FROM dbo.[CashShopData]
    JOIN dbo.Character ON dbo.Character.AccountID = dbo.CashShopData.[AccountID]
    WHERE dbo.Character.Name=@Name3


    UPDATE dbo.RankingDevilSquare SET Score_Semanal = '0'
    Ai fica teu critério qual valor WCoinC premiar.


    Em Breve Season6
    [Somente membros podem ver os links. ]

  3. #3
    Membro Legacy's Avatar
    Data de Ingresso
    Aug 2015
    Posts
    186
    Thanks Thanks Given 
    0
    Thanks Thanks Received 
    7
    Thanked in
    6 Posts
    Mencionado
    6 Post(s)
    País
    Brazil
    Citação Originally Posted by lockzao Ver Post
    Olá, (...) UPDATE dbo.[MK_MEDALHAS] SET medal_evento=medal_evento+1 FROM dbo.[CashShopData]
    JOIN dbo.Character ON dbo.Character.AccountID = dbo.CashShopData.[AccountID]
    WHERE dbo.Character.Name=@Name
    Mano lockzao, ta quase pronto do "medal_evento" é da 1 somente ao 1º colocado, os outros premiação normal.
    Obs: falta só esse trcho do evento medal, o restante ta perfeito.

  4. #4
    Membro lockzao's Avatar
    Data de Ingresso
    Jan 2016
    Posts
    67
    Thanks Thanks Given 
    0
    Thanks Thanks Received 
    5
    Thanked in
    2 Posts
    Mencionado
    11 Post(s)
    MEU HUMOR
    Cool
    País
    Brazil
    Experimenta alterar essa linha

    UPDATE dbo.[MK_MEDALHAS] SET medal_evento=medal_evento+1 FROM dbo.[MK_MEDALHAS]
    JOIN dbo.Character ON dbo.Character.AccountID = dbo.MK_MEDALHAS.[Name]
    WHERE dbo.Character.Name=@Name


    UPDATE dbo.[MK_MEDALHAS] SET medal_evento=medal_evento+1 FROM dbo.[MK_MEDALHAS]
    JOIN dbo.Character ON dbo.Character.AccountID = dbo.MK_MEDALHAS.[Name]
    WHERE dbo.Character.Name=@Name2


    UPDATE dbo.[MK_MEDALHAS] SET medal_evento=medal_evento+1 FROM dbo.[MK_MEDALHAS]
    JOIN dbo.Character ON dbo.Character.AccountID = dbo.MK_MEDALHAS.[Name]
    WHERE dbo.Character.Name=@Name3
    Estou meio enferrujado, faz tempo que não brinco com script sqlserver, rsrs


    Em Breve Season6
    [Somente membros podem ver os links. ]

  5. #5
    Membro Legacy's Avatar
    Data de Ingresso
    Aug 2015
    Posts
    186
    Thanks Thanks Given 
    0
    Thanks Thanks Received 
    7
    Thanked in
    6 Posts
    Mencionado
    6 Post(s)
    País
    Brazil
    Citação Originally Posted by lockzao Ver Post
    Experimenta alterar essa linha


    UPDATE dbo.[MK_MEDALHAS] SET medal_evento=medal_evento+1 FROM dbo.[MK_MEDALHAS]
    JOIN dbo.Character ON dbo.Character.AccountID = dbo.MK_MEDALHAS.[Name]
    WHERE dbo.Character.Name=@Name
    essa linha da "+1" pra todos, o q to pretendendo é da "1" apenas ao 1º colocado.

    testei outras possibilidades mas sem sucesso.

  6. #6
    Membro lockzao's Avatar
    Data de Ingresso
    Jan 2016
    Posts
    67
    Thanks Thanks Given 
    0
    Thanks Thanks Received 
    5
    Thanked in
    2 Posts
    Mencionado
    11 Post(s)
    MEU HUMOR
    Cool
    País
    Brazil
    Citação Originally Posted by Legacy Ver Post
    essa linha da "+1" pra todos
    Acho impossível pois tem where no final do código.

    Citação Originally Posted by Legacy Ver Post
    o q to pretendendo é da "1" apenas ao 1º colocado.
    testei outras possibilidades mas sem sucesso
    Se verificar no seu post inicial você pediu para dar WCoinC e medal_evento ao top3, se não quer premiar o top2 e o top3 é só remover os updates que não quer que o sqlserver execute.

    Seu código ficaria assim

    DECLARE @Name varchar(10)
    DECLARE @Name2 varchar(10)
    DECLARE @Name3 varchar(10)


    SELECT TOP 1 @Name=Name FROM RankingDevilSquare order by Score_Semanal desc, Name desc
    SELECT TOP 1 @Name2=Name FROM RankingDevilSquare where Name<>@Name order by Score_Semanal desc, Name desc
    SELECT TOP 1 @Name3=Name FROM RankingDevilSquare where Name<>@Name and Name<>@Name2 order by Score_Semanal desc, Name desc


    UPDATE dbo.[CashShopData] SET WCoinC=WCoinC+50 FROM dbo.[CashShopData]
    JOIN dbo.Character ON dbo.Character.AccountID = dbo.CashShopData.[AccountID]
    WHERE dbo.Character.Name=@Name


    UPDATE dbo.[CashShopData] SET WCoinC=WCoinC+30 FROM dbo.[CashShopData]
    JOIN dbo.Character ON dbo.Character.AccountID = dbo.CashShopData.[AccountID]
    WHERE dbo.Character.Name=@Name2


    UPDATE dbo.[CashShopData] SET WCoinC=WCoinC+10 FROM dbo.[CashShopData]
    JOIN dbo.Character ON dbo.Character.AccountID = dbo.CashShopData.[AccountID]
    WHERE dbo.Character.Name=@Name3


    UPDATE dbo.[MK_MEDALHAS] SET medal_evento=medal_evento+1 FROM dbo.[MK_MEDALHAS]
    JOIN dbo.Character ON dbo.Character.AccountID = dbo.MK_MEDALHAS.[Name]
    WHERE dbo.Character.Name=@Name


    UPDATE dbo.RankingDevilSquare SET Score_Semanal = '0'



    • Premia top1, top2 e top3 com WCoinC
    • Premia top1 com medal_evento
    Last edited by lockzao; 29/01/2020 at 09:57 AM.


    Em Breve Season6
    [Somente membros podem ver os links. ]

  7. #7
    Membro Legacy's Avatar
    Data de Ingresso
    Aug 2015
    Posts
    186
    Thanks Thanks Given 
    0
    Thanks Thanks Received 
    7
    Thanked in
    6 Posts
    Mencionado
    6 Post(s)
    País
    Brazil
    Citação Originally Posted by lockzao Ver Post
    Seu código ficaria assim .....
    [Somente membros podem ver os links. ]
    desculpa pelo abuso,
    [Somente membros podem ver os links. ].

    • Premia top1, top2 e top3 com WCoinC
    • Premia top1 com medal_evento

    A unica parte q ta pegando é a referente a medalhas, o resto ta de boa.

    23 Horas 9 minutes:------- Atualizado -------

    Citação Originally Posted by lockzao Ver Post
    (...)
    Passando para lhe agradecer pela ajuda, xd

    Informando q a linha funcional ficou assim:
    UPDATE dbo.[MK_MEDALHAS] SET medal_ds_s = '1' FROM dbo.[MK_MEDALHAS]JOIN dbo.Character ON dbo.Character.AccountID = dbo.MK_MEDALHAS.[login]
    WHERE dbo.Character.Name=@Name

    Podem fechar o tópico.
    Last edited by Legacy; 30/01/2020 at 12:06 PM.

  8. #8
    Membro lockzao's Avatar
    Data de Ingresso
    Jan 2016
    Posts
    67
    Thanks Thanks Given 
    0
    Thanks Thanks Received 
    5
    Thanked in
    2 Posts
    Mencionado
    11 Post(s)
    MEU HUMOR
    Cool
    País
    Brazil
    De nada.
    Precisar estamos ai.


    Em Breve Season6
    [Somente membros podem ver os links. ]

Permissões de Postagem

  • Você não pode iniciar novos tópicos
  • You may not post Resposta(s)
  • Você não pode enviar anexos
  • Você não pode editar suas mensagens
  •  
Sobre nós
Somos uma comunidade em atividade a 8 anos que aborda assuntos relacionados a games em geral, principalmente games MMORPG. e que busca sempre ajudar os membros através de conteúdos, tutoriais e suporte...
Nossos anunciantes
Hinetworks
VelozHost
InovHost
Rede Sociais