2014-10-22 2 views
1

내 사무실 내부 용 C# winforms 애플리케이션을 빌드 중입니다. 내 메인 테이블에는 열이 10 개 이상 있고 다른 값으로 업데이트 된 40 명 이상의 사용자가 있습니다. 이름 loantype 가진 테이블을 업데이트 일례로서 특정 날짜와 관련된 mysqal 데이터베이스의 다중 값 계산

USER1, loannumber 이름 loantype와 USER2 업데이트 테이블 loannumber

일시 각 행

이것을에서 timestamp 열 값으로 기록 내 데이터베이스 디자인입니다

+---------+------+-------------+---------------------+ 
| 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 | 
+---------+------+-------------+---------------------+ 

예를 들어, 얼마나 많은 신규 대출 및 초 대출 다이아나 오늘 입력 된 DataGridView

에 보여 그 등 내가 다른 8 열에서 값을 계산하려면 내가 다른 열 색상을 가지고 예를 들어 datagridvire

을 보여 얼마나 많은 (검정, 흰색)

이 나는 ​​검은 색 값은 다이아나 오늘 입력하고 얼마나 많은 신규 대출 얼마나 많은 흰색 lonas의 다이아나 업데이트 오늘이 함께 노력

한 DataGridView를 모두 보여하지만 만에 하나 개의 값을 검색 얼마나 많은 계산하려면 once

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 

을 계산하기 위해 관리하지만 지금은 내 결과 내 형태로 내을 DateTimePicker에 동일 필터링하려면 사용을 선택해야합니다. 내 dtp (2014 년 10 월 23 일) 및 내 데이터베이스에서 짧은 양식을 사용하여 (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(); 

누군가가이 최신 문제를 해결할 수있는 방법을 알려주십시오.

+1

그래서 더 많은 group 절과 count() 필드를 추가하십시오. –

+0

하지만 더 많은 그룹 절을 추가하면 쿼리에서 빈 결과를 표시합니다. –

+0

여러 개의 '유형'을 추가하는 방법을 보여 주실 수 있습니까? –

답변

0

마침내 모든 사용자 기록을 특정 날짜로 계산할 수있었습니다. 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 
관련 문제