none
C# MySql Query RRS feed

  • Pergunta

  • Boas pessoal, queria perguntar como se faz uma query q tenham dados de duas tabelas, eu estou a complicar muito, acho.. s: 

    Eu quero fazer uma query q vá contar quantos eventos ocorreu numa determinada data e local, soq esses campos da data e local estao noutra tabela.. então eu fiz assim,

    MySqlCommand comando = new MySqlCommand("SELECT COUNT(tabela1.evento) FROM tabela1,tabela2 WHERE tabela2.data = '2010-01-01' AND tabela2.data_fim = '2015-06-22' AND tabela2.concelho ='Faro' AND tabela1.cod = tabela2.cod",conexao);

    Int32 count = (Int32) comando.ExecuteScalar();
    textBox1.Text = Convert.ToString(count);

    mas não retribui nada, está mal a query?


    segunda-feira, 22 de junho de 2015 11:21

Respostas

  • Noob, sua query está errada nos Joins e possivelmente nas datas.

    Seria:

    string Query = "SELECT COUNT(tabela1.evento) FROM tabela1 ";
    Query += "LEFT OUTER JOIN tabela2 ON tabela1.CAMPO_QUE_FAZ_REFERENCIA = tabela2.ID_DE_DESTINO ";
    Query += "WHERE tabela2.concelho ='Faro' AND tabela1.cod = tabela2.cod AND ";
    Query += "tabela2.data = '2010-01-01' AND tabela2.data_fim = '2015-06-22';";
    MySqlCommand comando = new MySqlCommand(Query, conexao);

    Troque o "CAMPO_QUE_FAZ_REFERENCIA" pelo campo na tabela1 que aponta para o campo "ID_DE_DESTINO" na tabela2.

    Além disso, essa Query vai te trazer os resultados que tem data igual a 01/jan/2010 e data final igual a 22/jun/2015, NÃO VAI TE TRAZER os registros que estão ENTRE ESSAS DATAS. Se é isso que você quer, ok - se não, coloque o ">=" na data e "<=" na data fim.



    • Sugerido como Resposta SammuelMiranda terça-feira, 23 de junho de 2015 14:45
    • Marcado como Resposta Cristopher C I_ quinta-feira, 25 de junho de 2015 13:32
    terça-feira, 23 de junho de 2015 14:45

Todas as Respostas

  • Essas duas tabelas tem algum campo em comum?

    segunda-feira, 22 de junho de 2015 11:25
  • Sim, o campo cod
    segunda-feira, 22 de junho de 2015 13:23
  • Acho que o comando join pode de ajudar a unir as duas tabelas e fazer o Count que você precisa.
    terça-feira, 23 de junho de 2015 01:46
  • Noob, sua query está errada nos Joins e possivelmente nas datas.

    Seria:

    string Query = "SELECT COUNT(tabela1.evento) FROM tabela1 ";
    Query += "LEFT OUTER JOIN tabela2 ON tabela1.CAMPO_QUE_FAZ_REFERENCIA = tabela2.ID_DE_DESTINO ";
    Query += "WHERE tabela2.concelho ='Faro' AND tabela1.cod = tabela2.cod AND ";
    Query += "tabela2.data = '2010-01-01' AND tabela2.data_fim = '2015-06-22';";
    MySqlCommand comando = new MySqlCommand(Query, conexao);

    Troque o "CAMPO_QUE_FAZ_REFERENCIA" pelo campo na tabela1 que aponta para o campo "ID_DE_DESTINO" na tabela2.

    Além disso, essa Query vai te trazer os resultados que tem data igual a 01/jan/2010 e data final igual a 22/jun/2015, NÃO VAI TE TRAZER os registros que estão ENTRE ESSAS DATAS. Se é isso que você quer, ok - se não, coloque o ">=" na data e "<=" na data fim.



    • Sugerido como Resposta SammuelMiranda terça-feira, 23 de junho de 2015 14:45
    • Marcado como Resposta Cristopher C I_ quinta-feira, 25 de junho de 2015 13:32
    terça-feira, 23 de junho de 2015 14:45