美好的一天!
我想知道是否有人可以建议我所做的事情是否完全没效率 - 我希望它是 - 并且可能建议我应该如何提高效率!
我从PHP
表中提取数据并将其显示在表格中。
表的行与用户相关,列是在两个日期之间出现的一个表字段中的条目数。
我有30个日期范围,因此有30列。
我目前有一个带有日期范围的12/03/2017 00:00:00 - 18/03/2017 23:59:59 followed by 24/03/2017 00:00:00 -
30/03/2017 23:59:59
数组,每次循环到下一个表格单元格时,我都会使用新的日期范围运行MySQL查询。每个用户执行此操作30次似乎效率低下。有没有办法可以在一个查询中完全解决这个问题?日期范围并不总是连续几周。我可能有一个
SELECT * FROM `wwlassessments` WHERE `assessedBy`='STAFF NAME' && `dateAchieved`
BETWEEN '2017-05-10 00:00:00' AND '2017-05-16 23:59:59'
也许有办法传递日期范围列表并在1个查询中收回结果?或者是我正在做的正确的方式,但只是缓慢?
这是我当前循环插入不同日期的查询示例。
string fromAddress ="doctor@gmail.com";
string fromPassword = "idntcare";
string toAddress = "thevarghese@gmail.com";
using (MailMessage mm = new MailMessage(fromAddress, toAddress))
{
mm.Subject = subject;
mm.Body = body;
//attachment
if (fuAttachment.HasFile)
{
string FileName = Path.GetFileName(fuAttachment.PostedFile.FileName);
mm.Attachments.Add(new Attachment(fuAttachment.PostedFile.InputStream, FileName));
}
mm.IsBodyHtml = true;
System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.EnableSsl = true;
NetworkCredential NetworkCred = new NetworkCredential(email, password);
smtp.UseDefaultCredentials = true;
smtp.Credentials = NetworkCred;
smtp.Port = 587;
//smtp.Port = 25;
smtp.Send(mm);
ClientScript.RegisterStartupScript(GetType(), "alert", "alert('Email sent.');", true);
}
感谢您的任何建议。 千斤顶
答案 0 :(得分:0)
试试这个:
SELECT *
FROM `wwlassessments`
WHERE `assessedBy`='STAFF NAME'
&& (`dateAchieved` BETWEEN '2017-05-10 00:00:00' AND '2017-05-16 23:59:59'
|| `dateAchieved` BETWEEN '2017-05-19 00:00:00' AND '2017-05-24 23:59:59')
您也可以在php
中进行一些预先检查,以防止重复的日期范围。
答案 1 :(得分:0)
试一试:
SELECT *
FROM wwlassessments
WHERE assessedBy = 'STAFF NAME'
AND dateAchieved BETWEEN '2017-05-10 00:00:00' AND '2017-05-16 23:59:59'
UNION ALL
SELECT *
FROM wwlassessments
WHERE assessedBy = 'STAFF NAME'
AND dateAchieved BETWEEN '2017-05-24 00:00:00' AND '2017-05-30 23:59:59'
或强>
SELECT *
FROM wwlassessments
WHERE assessedBy = 'STAFF NAME'
AND (dateAchieved BETWEEN '2017-05-10 00:00:00' AND '2017-05-16 23:59:59'
OR dateAchieved BETWEEN '2017-05-24 00:00:00' AND '2017-05-30 23:59:59')