![](/img/trans.png)
[英]Query database to display the total count of data based on current date and month from multiple tables
[英]Count the Date column based on the same month from Mysql table
可以說我有一個帶有empID和date列的MySql表。 我想獲取日期來自同一月份的empID的計數。 例如,如果empID在同一月的表中有4個日期,則應觸發一封電子郵件
using (MySqlConnection con = new MySqlConnection(serverstring))
{
con.Open();
string query = "SELECT COUNT(empID) FROM tblnm WHERE empID=@eid date=date";
MySqlCommand cmd = new MySqlCommand(query, con);
cmd.Parameters.AddWithValue("@eid", lbleid.Text);
string cnt = cmd.ExecuteScalar().ToString();
var count = Convert.ToInt32(cnt);
if(count >= 4)
{
triggerEmail();
}
}
因此,該月份可以是未來幾個月的任何月份,但是如果在任何幾個月的任何月份中,有4個以上具有相同empID的數據具有相同的empID,則查詢應進行檢查並必須觸發電子郵件。 我該怎么辦? 提前致謝....
MySql具有LAST_DAY()
函數,可以將其與GROUP BY
/ HAVING
子句結合使用,以輕松獲取當月的計數:
SELECT EmpID, LAST_DAY(`Date`) AS Month, COUNT(*) As NumEntries
FROM tblnm
WHERE EmpID = @EmpID
GROUP BY EmpID, LAST_DAY(`Date`)
HAVING COUNT(*) >= 4
並像這樣使用它:
string query = @"
SELECT EmpID, LAST_DAY(`Date`) AS Month, COUNT(*) As NumEntries
FROM tblnm
WHERE EmpID = @EmpID
GROUP BY EmpID, LAST_DAY(`Date`)
HAVING COUNT(*) >= 4;";
using (var con = new MySqlConnection(serverstring))
using (var cmd = new MySqlCommand(query, con))
{
cmd.Parameters.Add("@EmpID", MySqlDbType.Int32).Value = Convert.ToInt32(lbleid.Text);
con.Open();
using (MySqlDataReader rdr = cmd.ExecuteReader())
{
while(rdr.Read())
{
triggerEmail(rdr["EmpID"], (int)rdr["NumEntries"]);
}
}
}
您可以使用此查詢:
SELECT COUNT(empID)
FROM tblnm
WHERE year(date) = year(@date) and month(date) = month(@date);
但是我會說,如果您想知道哪個empID具有四個以上的條目:
SELECT empID, COUNT(*)
FROM tblnm
WHERE year(date) = year(@date) and month(date) = month(@date)
group by empID;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.