2014-04-10 7 views
-2

제발 나를 도와 줄 수 있어요.mysql/case/when/then

다음 mysql 쿼리에 오류가 있습니까?

SELECT *, 
CASE 
    WHEN vat = '1' THEN '1.10' 
    WHEN vat = '2' THEN '1.21' 
END AS _vat, 
CASE 
    WHEN sleva_kc != '' AND sleva_procent = '' THEN ((cena - sleva_kc) * _vat) 
    WHEN sleva_kc = '' AND sleva_procent != '' THEN ((cena * (1 - (sleva_procent/100))) * _vat) 
    WHEN sleva_kc = '' AND sleva_procent = '' THEN (cena * _vat) END AS _cena 
FROM kws_produkty WHERE _cena >= '100' AND _cena <= '500' 

내가 MySQL의 커넥터를 사용합니다

  • @mysql_connect을 (HOST, USER, PASS)

설명 :

  • 통 = VAT
  • 시나 = 가격
  • 현금 할인의
  • sleva_kc = 양 %의 할인의
  • sleva_procent = 양

내가 출력을 얻을 필요 할인 및 부가가치세와

  • _cena = 가격 (할인 비율 또는 금액 일 수있다 부가 가치세 (VAT)가 더 높거나 더 좋음)

Thank you.

+0

오류 메시지는 무엇입니까? –

+0

이러한 경우 - 결과를 반환해야합니까 아니면 어떤 종류의 레코드를 필터링해야합니까? 구문이 잘못되었습니다. –

+0

오류 : SQL 구문에 오류가 있습니다. MySQL 서버 버전에 해당하는 설명서에서 올바른 구문을 확인하십시오. 'case when vat ='1 'then'1.10 'vat ='2 'then'1.21 'END AS _vat, CASE whe'on line 1. 저는 mysql에서 초보자입니다. – jurkix

답변

0

SQL이 완전히 망가졌습니다. case 문을 사용할 수없는 곳에 넣고 elseif을 사용하고 있지만 if 문을 사용해야합니다.

SELECT 
    CASE .... END CASE, 
    IF ... THEN ... ELSEIF ... END IF 
FROM yourtable 
WHERE .... 

난 당신이 구문 설명서를 읽기 시작 제안 : https://dev.mysql.com/doc/refman/5.0/en/case.html

0

귀하의 CASE WHEN ... END 표현 필드 목록의 일부가되어야합니다 - 당신의 FROM -clause 전에.

WHERE -clause의 열 별명의 사용은 불법, manual를 참조하십시오

표준 SQL은 WHERE 절에 열 별칭에 대한 참조를 허용하지 않습니다. WHERE 절이 평가 될 때 컬럼 값이 아직 결정되지 않았기 때문에이 제한이 부과됩니다.