2013-06-21 3 views
0

그래서 vb.net을 배우기 시작했는데, 다음 표에 나와있는 것과 같은 mysql 문을 사용하여 테이블 중 하나의 열에 대해 고유 한 개수를 얻습니다. 필자는 문법 오류에 익숙해졌지만, 내가 읽은 거의 모든 것이 정확해야한다고 제안한다. 또한, 그것을 MySQL Workbench로 가져 와서 어떤 이유로 든 내 코드에서 작동하지 않기 때문에 잘 작동합니다. Select Count Distinct Syntax, vb.net

Dim sRetrieve As String 
Dim numvals As OdbcDataReader 
sRetrieve = "SELECT COUNT (DISTINCT defect_code) FROM daily_data WHERE MONTH(date)=" & select_month & " AND YEAR(date)=" & select_year 
Dim query_exe As New Odbc.OdbcCommand(sRetrieve, cn) 
numvals = query_exe.ExecuteReader() 

나는 잠시 지금이에 대한 내 머리를 두드리는 있었어요, 그래서 MySQL의 문 뭐가 잘못 말해 어떤 도움을 크게 감상 할 수있다.

COUNT와 첫 번째 사이의 공간을 알아 냈습니다. (그렇게하고 있었는데, 너무 오랫동안 나를 붙잡아 두었던 그런 유쾌한 작은 일이지만, 그것이 어떻게 된 것인지 추측합니다. 모두.

+0

당신은 매개 변수'select_month'와'select_year' 주위에 약간의 따옴표를 추가해야 할 수도 있습니다. 또한, 아마 [매개 변수화 된 쿼리] (http://stackoverflow.com/questions/542510/how-do-i-create)를 사용해야합니다. -a-parameterized-sql-query-why-should-i) 및 문자열 연결이 아닙니다. – jbabey

+0

쿼리는 제대로 실행됩니다. 'select_month' 및'select_year'의 값 (및 데이터 유형)은 무엇입니까? 그리고 어떻게 "일하기를 거부합니까"? MySQL 오류가 있습니까? VB 오류? –

+0

그것의 주위에 따옴표는 간계를 보이지 않았다. select_month 및 select_year는 폼의 드롭 다운 목록에서 사용자가 선택한 값을 기준으로 설정되는 정수입니다. 예를 들어 select_month는 6 일 수 있고 select_year는 2013 일 수 있습니다. 오류 : [4200] [MySQL] [ODBC 3.51 드라이버] [mysqld-5.6.11] SQL 구문에 오류가 있습니다. '*) FROM (SELECT DISTINCT FROM daily_data) WHERE MONTH (date) = 6 AND YE'근처에서 사용할 올바른 문법은 MySQL 서버 버전에 해당하는 설명서를 확인하십시오. – user2498668

답변

0

MONTH (날짜) MySQL의에서 문자열을 반환합니다. 당신이 ' '로 묶어야합니다 그래서.

sRetrieve = "SELECT COUNT (DISTINCT defect_code) FROM daily_data WHERE MONTH(date)='" & select_month & "' AND YEAR(date)=" & select_year; 
+0

나는 이것이 그것을 고칠 것이라고 확신했다. 그러나 그런 운이 없다. 아직도, 좋은 캐치. 매개 변수화 된 쿼리로 변환하고 그 것이 나를 위해 필요한 것인지 확인하려고합니다. 그 밖의 것이 없다면 보안상의 이유만으로도 내가해야 할 일이었던 것 같습니다. – user2498668