2011-08-29 5 views
0

mysql 테이블의 열 내용을 기반으로 값을 반환하고 싶습니다.mysql 요청에 IF가있는 제어 흐름

예 : '뉴스 레터'= 1 명 복귀 "가입자가"다른 사람이

내가이 구문을 시도했다 "등록되지 않은"경우 :

SELECT `id_customer`, `email`, `firstname`, `lastname`, `birthday`, 
        CASE WHEN `newsletter`=1 THEN "Abonné" ELSE "Non Abonné" END 
        FROM `"._DB_PREFIX_."customer` 
        ORDER BY `lastname` ASC 

을 그리고 그것은 절대적으로 작동하지 않습니다.

조금 도와주세요.

+0

은 일반 SQL이 아니다 있지만 최종 SQL 구문 오류가없는 경우 당신의 접근 방식이 올바른 것입니다. 그것이 제대로 작동하지 않는 방법을 말하지 않는 한, 우리는 도움이되는 대답을 제공 할 수 없습니다. –

답변

1

(그들은 잘못 때문에 ANSI 표준 따옴표로 인용하지 난 그냥 역 따옴표를 제거있어 교체)

SELECT id_customer, email, firstname, lastname, birthday, 
IF(newsletter=1, "Abonné", "Non Abonné") is_subscribed 
FROM "._DB_PREFIX_."customer ORDER BY lastname ASC 
+0

답변 해 주셔서 감사합니다. –

0

mysql 삼자 인 IF() 함수를 사용하십시오. AS를 사용하여 결과의 ​​별명을 지정할 수 있습니다.

1
CREATE TABLE customer (
    id_customer INT(10), 
    email VARCHAR(250), 
    firstname VARCHAR(100), 
    lastname VARCHAR(100), 
    birthday DATE, 
    newsletter TINYINT(1) 
); 

INSERT INTO customer (id_customer, email, firstname, lastname, birthday, newsletter) 
VALUES (1, '[email protected]', 'Abe', 'Aaronson', '1965-12-31', 1), 
    (2, '[email protected]', 'Bill', 'Bond', '1925-05-01', 0); 

원래 쿼리를 사용하는 것을 시도하십시오 :

SELECT id_customer, email, firstname, lastname, birthday, 
CASE WHEN newsletter=1 THEN 'Abonné' ELSE 'Non Abonné' END 
FROM customer 
ORDER BY lastname ASC; 

. .. 지문 :

+-------------+------------------+-----------+----------+------------+------------------------------------------------------------+ 
| id_customer | email   | firstname | lastname | birthday | CASE WHEN newsletter=1 THEN 'Abonné' ELSE 'Non Abonné' END | 
+-------------+------------------+-----------+----------+------------+------------------------------------------------------------+ 
|   1 | [email protected] | Abe  | Aaronson | 1965-12-31 | Abonné              | 
|   2 | [email protected] | Bill  | Bond  | 1925-05-01 | Non Abonné             | 
+-------------+------------------+-----------+----------+------------+------------------------------------------------------------+ 

그래서 어딘가에 문법 오류가 생겼을 것입니다 (이것은 MySQL 서버로 보내지는 최종 SQL이 아닌 PHP 문자열의 일부로 보입니다).

또한 별칭을 사용하는 것이 좋습니다. 인덱스 열을 Fechting 꽤 오류가 발생하기 쉬운입니다 : (". ._DB_PREFIX _"`customer`)

... CASE WHEN newsletter=1 THEN 'Abonné' ELSE 'Non Abonné' END AS status 
관련 문제