我正在为办公室内部使用构建 C# winforms 应用程序。我的主表中有 10 多个列,并且有 40 多个用户更新了不同的值。
举个例子
用户 1 更新了表中的名称、贷款类型、贷款编号 user2 更新表,包含名称、贷款类型、贷款编号
时间和日期记录在每行中的时间戳列值
这是我的数据库设计
+---------+------+-------------+---------------------+
| loanid | type | name | timestamp | and more 8 columns left >>
+---------+------+-------------+---------------------+
| 1 | new | diana | 2014-10-02 14:59:21 |
| 2 | new | diana | 2014-10-03 09:05:09 |
| 3 | sec | smith | 2014-10-03 09:05:09 |
| 4 | new | kim | 2014-10-03 09:06:23 |
| 5 | new | kim | 2014-10-03 09:22:34 |
| 6 | new | katie | 2014-10-03 09:35:23 |
| 7 | sec | kim | 2014-10-03 10:03:08 |
| 8 | sec | diana | 2014-10-03 10:20:15 |
+---------+------+-------------+---------------------+
举个例子,我想计算戴安娜今天输入了多少新贷款和多少秒贷款,并将其显示在数据 GridView 上
像这样我想计算另外 8 列中的值并显示 datagridvire
例如我在另一列中有颜色(黑色,白色)
我想计算戴安娜今天输入了多少黑色值,并在一个数据 GridView 中显示今天有多少新贷款和多少白色洛纳斯戴安娜更新
我试过这个但是它一次只检索一个值
SELECT name,type, COUNT(*) FROM loans
where type= 'new '
GROUP BY name, type;
我只想显示今天的主菜。应该使用 datetimepicker 选择日期
无论如何,我设法用这段代码清点了我所有的元素
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `allcounter`()
BEGIN
SELECT username, COUNT(IF(status='hold',1,null)) 'hold',
COUNT(IF(status='complete',1,null)) 'complete',
COUNT(IF(loantype='fha',1,null)) 'fha',
COUNT(IF(loantype='ca',1,null)) 'ca',
COUNT(IF(loantype='idf',1,null)) 'idf',
COUNT(IF(loantype='slan',1,null)) 'slanl',
COUNT(IF(status='hold',1,null)) 'hold',
COUNT(IF(status='complete',1,null)) 'complete',
COUNT(IF(status='route',1,null)) 'route',
COUNT(IF(status='route(*)',1,null)) 'route(*)',
COUNT(IF(neworsecond='new',1,null)) 'new',
COUNT(IF(neworsecond='Second',1,null)) 'Second'
FROM loans
WHERE DATE(submittimestamp) = DATE(@p)
group by username;
END
但现在我想过滤我的结果等于我表单中的日期时间选择器。我在我的 dtp (10/23/2014) 和我的数据库中使用了短格式,我将时间存储为 (2014-10-23 10:20:15) this.i 实现了以下方法,但它不起作用
string constring = string.Format("datasource='{0}';port='{1}';database='{2}';username=uwadminview;password=**************;Connect Timeout=180;Command Timeout=180", dbserverip.Text, portnumber.Text, dbname.Text);
MySqlConnection conwaqDatabase = new MySqlConnection(constring);
MySqlCommand cmdwaqDatabase = new MySqlCommand("call allcounter DATE(@p)", conwaqDatabase);
DateTime dateTimeValue = tdtp.Value;
cmdwaqDatabase.Parameters.AddWithValue("@P", dateTimeValue);
try
{
MySqlDataAdapter sda = new MySqlDataAdapter();
sda.SelectCommand = cmdwaqDatabase;
dbdataset = new DataTable();
sda.Fill(dbdataset);
reportingDGV.DataSource = dbdataset;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
conwaqDatabase.Close();
谁能告诉我如何解决这个新问题
最佳答案
最后我设法统计了特定日期的所有用户记录。以日期为参数直接从表单调用mysql过程
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `allcounter`(IN datestamp DATE)
BEGIN
SELECT username,
COUNT(IF(status='hold',1,null)) 'hold',
COUNT(IF(status='complete',1,null)) 'complete',
COUNT(IF(status='route',1,null)) 'route',
COUNT(IF(status='route(*)',1,null)) 'route(*)',
COUNT(IF(loantype='fha',1,null)) 'fha',
COUNT(IF(loantype='va',1,null)) 'va',
COUNT(IF(loantype='grh',1,null)) 'grh',
COUNT(IF(loantype='conventional',1,null)) 'conventional',
COUNT(IF(purpose='Refinance',1,null)) 'Refinance',
COUNT(IF(purpose='Purchase',1,null)) 'Purchase'
FROM loans
WHERE DATE(submittimestamp) = datestamp
group by username;
END
关于c# - 计算与特定日期相关的 mysql 数据库中的多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26515650/