2014-10-07 3 views
0

phpMyAdmin을 사용하고 있으며 함수를 만드는 SQL 쿼리를 만들려고합니다.셀렉터를 사용하여 총 셀 수를 계산하는 SQL 쿼리

DELIMITER $$ 
CREATE FUNCTION get_totalLanguages(_CountryCode CHAR(3)) RETURNS INT 
BEGIN 
    DECLARE totalLang INT; 
    SET totalLang = SELECT count(DISTINCT Language) FROM countrylanguage WHERE (CountryCode == _CountryCode); 
    RETURN totalLang; 
END$$ 
DELIMITER 

표는 다음과 같습니다

+=============+==========+ 
| countrylanguage  | 
+=============+==========+ 
| CountryCode | Language | 
+=============+==========+ 
|   USA | English| 
+-------------+----------+ 
|   USA | Spanish| 
+-------------+----------+ 
|   USA | French| 
+-------------+----------+ 
|   MEX | Spanish| 
+-------------+----------+ 
|   MEX | English| 
+-------------+----------+ 
|   GER | German| 
+-------------+----------+ 
|   GER | English| 
+=============+==========+ 

가 나는 COUNTRYCODE 인수 함수를 호출 할 수 있어야합니다. 이 함수는 해당 국가 코드에 몇 개의 개별 언어가 있는지 계산 한 다음 정수로 반환합니다. 현재이 쿼리는 오류를주지는 않지만 아무 것도하지 않습니다.

get_totalLanguages ​​('MEX')는 3

감사를 반환해야합니다 2.

get_totalLanguages ​​('USA')를 반환해야합니다!

답변

1

DELIMITER $$ 
CREATE FUNCTION get_totalLanguages(_CountryCode CHAR(3)) 
RETURNS INT 
BEGIN 
    DECLARE totalLang INT; 
    SELECT count(DISTINCT Language) into totalLang FROM countrylanguage WHERE CountryCode = _CountryCode); 
    RETURN totalLang; 
END$$ 
DELIMITER 

SELECT get_totalLanguages('MEX');

+0

흠이,이 사람이 CounterCode에서 나에게 오류를 제공 함수 호출의 반환 값을 선택하십시오 == _CountryCode –

+0

내 편집에서보세요, 이중 동일한를 사용하지 않아야 MySQL에서 동등 함을위한 서명. – Lock

+0

그래, 그게 문제 였어. 감사! –

관련 문제