c# - 使用 COUNT 进行查询

标签 c# mysql sql database

我想要一张 table 和很多 table 。 在我放置 Count(taskid) 之前,它运行良好。

private DataTable GetData() //get any data
{
    string connString = @"Data Source=aa.net;Initial Catalog=db_c;Persist Security Info=True;User ID=db_c_ExternalWriter;Password=aa";
    string query = "Select a.Name, b.Restaurant,  a.City, c.[Postal Code], a.[Open Date], a.POSSystem FROM Stores a, tblConcepts b, tblStates c WHERE a.ConceptID = b.Restaurantid AND  a.State = c.Stateid AND a.[Open Date] >= cast(cast(getdate() as date) as datetime";
   // string query2 = "SELECT Count(Taskid) FROM tblAssignedTasks WHERE Complete = 'True' GROUP BY StoreID";
    using (SqlConnection con = new SqlConnection(connString))
    {
        using (SqlCommand comm = new SqlCommand(query))
        {
            using (SqlDataAdapter sda = new SqlDataAdapter())
            {
                comm.Connection = con;
                sda.SelectCommand = comm;
                using (DataTable dt = new DataTable())
                {
                    sda.Fill(dt);
                    return dt;
                }
            }
        }
    }
}      

但是当我添加 Count(taskid) 时它不起作用。 SELECT Count(Taskid) FROM tblAssignedTasks WHERE Complete = 'True' GROUP BY StoreID; 我想添加这些查询,有什么想法吗?

private DataTable GetData() //get any data
{
    string connString = @"Data Source=aa.net;Initial Catalog=db_c;Persist Security Info=True;User ID=db_c_ExternalWriter;Password=aa";
    string query = "Select a.Name, b.Restaurant,  a.City, c.[Postal Code], a.[Open Date], a.POSSystem, d.Count(Taskid) FROM Stores a, tblConcepts b, tblStates c, tblAssignedTasks d WHERE a.ConceptID = b.Restaurantid AND  a.State = c.Stateid AND a.[Open Date] >= cast(cast(getdate() as date) as datetime AND b.Restaurantid = d.StoreID AND  d.Complete = 'True' GROUP BY d.StoreID)";
   // string query2 = "SELECT Count(Taskid) FROM tblAssignedTasks WHERE Complete = 'True' GROUP BY StoreID";
    using (SqlConnection con = new SqlConnection(connString))
    {
        using (SqlCommand comm = new SqlCommand(query))
        {
            using (SqlDataAdapter sda = new SqlDataAdapter())
            {
                comm.Connection = con;
                sda.SelectCommand = comm;
                using (DataTable dt = new DataTable())
                {
                    sda.Fill(dt);
                    return dt;
                }
            }
        }
    }
}

最佳答案

您需要修复查询。
当您使用聚合函数 (Count()) 时,您必须在 GROUP BY 子句中包含所有字段。 另外,将该行的错误语法更改为 d.Count(Taskid) as 'taskKid'(并提供别名)到 Count(d.Taskid) as 'taskKid'
另一个修复:a.[Open Date] >= cast(cast(getdate() as date) as datetime 错误更改为 a.[Open Date ] >= getdate()
这应该有效:

    SELECT a.Name, 
           b.Restaurant,  
           a.City, 
           c.[Postal Code], 
           a.[Open Date],
           a.POSSystem, 
           Count(d.Taskid) as 'taskKid' 
      FROM Stores a,
           tblConcepts b, 
           tblStates c, 
           tblAssignedTasks d 
     WHERE a.ConceptID = b.Restaurantid
       AND a.State = c.Stateid 
       AND a.[Open Date] >= getdate() 
       AND b.Restaurantid = d.StoreID 
       AND d.Complete = 'True' 
  GROUP BY a.Name,
           b.Restaurant,
           a.City, 
           c.[Postal Code], 
           a.[Open Date],
           a.POSSystem

关于c# - 使用 COUNT 进行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44399315/

相关文章:

sql - 如果存在则更新或者插入到sqlite3中

c# - 从类创建数据表(不是实例列表)

c# - 随机整数移位

mysql - 如何提高mysql查询的性能?

mysql - 显示名称 mysql 中包含 "and"的发布者列表

php - 使用一张表将不同的 MIME 类型上传到数据库

c# - 使用 lambdas/LINQ 单元测试集合内容满足特定条件

c# - 针对 ActiveDirectory 进行身份验证

php - 将表单数据传递给 php 变量。变量似乎是空的

MySql - 当我用 'and' 更新时会发生什么