none
Sum e group by and join no link RRS feed

  • Pergunta

  • Oi a  todos,

    fiz o seguinte select em link:

     

     

     var query = (from t in s.transacaos
        join type in s.tipoes on t.tipo_id equals type.id
        where t.data.Month >= monthInicial && t.data.Month <= monthFinal && t.data.Year == year && type.tipo_classe == types
        group t by new { t.tipo1.classdiscr, t.data.Month } into tr
        select new { somaValor = tr.Sum(v => v.valor), tr.Key.classdiscr, tr.Key.Month}).ToList();

     

    esta a dar o seguinte erro :

     

     

    System.Data.EntityCommandExecutionException: An error occurred while executing the command definition. See the inner exception for details. ---> MySql.Data.MySqlClient.MySqlException: Unknown column 'GroupBy1.K1' in 'field list'
     at MySql.Data.MySqlClient.MySqlStream.ReadPacket()
     at MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int32& insertedId)
     at MySql.Data.MySqlClient.Driver.GetResult(Int32 statementId, Int32& affectedRows, Int32& insertedId)
     at MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId)
     at MySql.Data.MySqlClient.MySqlDataReader.NextResult()
     at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
     at MySql.Data.Entity.EFMySqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
     at System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior)
     at System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)
     --- End of inner exception stack trace ---
     at System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)
     at System.Data.Objects.Internal.ObjectQueryExecutionPlan.Execute[TResultType](ObjectContext context, ObjectParameterCollection parameterValues)
     at System.Data.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption)
     at System.Data.Objects.ObjectQuery`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator()
     at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
     at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
     at BusinessLogic.Class.ExportToExcel.exportExcel(Int32 monthInicial, Int32 monthFinal, Int32 year, String types) in K:\Stock\BusinessLogic\Class\ExportToExcel.cs:line 101
    

     

    Ja procurei aqui no forum como fazer este tipo de select mais continua a ar o mesmo erro.

    Peco ajuda para resolver isso.

    Agradeço.

    quarta-feira, 19 de janeiro de 2011 13:07

Respostas

  • Cipriano, boa noite.

    Já conseguiu resolver esse problema? Eu acabei de passar por ele e consegui resolver, não sei se da melhor forma, porém gostaria de compartilhar com você.

    Caso tenha um outra forma por favor me passe.

     

    var query = (from t in s.transacaos
      join type in s.tipoes on t.tipo_id equals type.id
      where t.data.Month >= monthInicial && t.data.Month <= monthFinal && t.data.Year == year && type.tipo_classe == types
      select query;
    
    
    var querySum = (from q in query.ToList() 
    		group t by new { t.tipo1.classdiscr, t.data.Month } into tr
      select new { somaValor = tr.Sum(v => v.valor), tr.Key.classdiscr, tr.Key.Month}).ToList();
    


    Eu joguei o resultado sem agrupar e depois agrupei em uma nova consulta.

     


    Atenciosamente,
    Alexandre Luiz dos Santos, MCP
    Se a resposta foi útil, por favor marque como útil.
    quinta-feira, 23 de junho de 2011 21:25

Todas as Respostas

  • este consulta é em LINQ TO ENTITY ? se for a propriedade Tipo1 em transacoes é referente a outra entidade correto ? você precisa chamar ela tambem atráves de um Include

    from t in s.transacaos..Include("tipo1")//Aqui você precisa colocar o nome da entidade que faz relação com a entidade principal ao qual você deseja consultar os dados


    Olavo Oliveira Neto
    Se for útil marque como resposta e faça um Developer feliz :)
    quarta-feira, 19 de janeiro de 2011 15:08
    Moderador
  • Olavo sim e uma consulta em Linq to Entity. Pesquisei um bocado e verifiquei que  o erro da quando

    eu acrescento no select  os campos tr.Key.classdiscr, tr.Key.Month.

    Fiz o que me recomendou mais continua a dar o mesmo erro.

     

    Agradeço pela ajuda.

     

    Cipriano Fernandes

    It.dev - Analista/Programador

    quinta-feira, 20 de janeiro de 2011 07:22
  • Tenta substituir a ultima linha por:

    select new { somaValor = tr.Sum(v => v.valor), classDiscr =tr.Key.classdiscr, month = tr.Key.Month}).ToList();
    quinta-feira, 20 de janeiro de 2011 16:40
  • Caro Danilo,

    continua a dar o mesmo erro.

     

    Agradeço pela ajuda.

    Cipriano Fernandes

    It.dev - Analista/Programador

    sexta-feira, 21 de janeiro de 2011 08:15
  • Tenta transformar em object com o AsEnumerable então, ai você agrupa os objetos.

     

    Dá uma olhada nessa resposta:

    http://stackoverflow.com/questions/1059737/group-by-weeks-in-linq-to-entities

    sexta-feira, 21 de janeiro de 2011 18:28
  • Danilo,

    Ja tinha visto esse link, tentei tudo que ai esta. Se verificares podes ver que o o select que fiz e parecido com os que fizeram

    ai.

     

    Agradeço pela ajuda

     

     

    Cipriano Fernandes

     

    It.dev - Analista/Programador

     

    segunda-feira, 24 de janeiro de 2011 08:34
  • Cipriano, boa noite.

    Já conseguiu resolver esse problema? Eu acabei de passar por ele e consegui resolver, não sei se da melhor forma, porém gostaria de compartilhar com você.

    Caso tenha um outra forma por favor me passe.

     

    var query = (from t in s.transacaos
      join type in s.tipoes on t.tipo_id equals type.id
      where t.data.Month >= monthInicial && t.data.Month <= monthFinal && t.data.Year == year && type.tipo_classe == types
      select query;
    
    
    var querySum = (from q in query.ToList() 
    		group t by new { t.tipo1.classdiscr, t.data.Month } into tr
      select new { somaValor = tr.Sum(v => v.valor), tr.Key.classdiscr, tr.Key.Month}).ToList();
    


    Eu joguei o resultado sem agrupar e depois agrupei em uma nova consulta.

     


    Atenciosamente,
    Alexandre Luiz dos Santos, MCP
    Se a resposta foi útil, por favor marque como útil.
    quinta-feira, 23 de junho de 2011 21:25
  • Caro Alexandre

    Obrigado funciona correctamente.

     

    Cipriano Fernandes.

    quarta-feira, 28 de setembro de 2011 06:28