2013-05-02 6 views
0

임시 테이블의 전화 번호가있는 테이블을 채우려고합니다. 문제가없는 쿼리를 작성했습니다. 하지만 내 피블 렘은 회사가 이미 기본 전화 번호를 갖고 있는지 여부를 알고있는 것입니다.MySQL의 논리 - 데이터를 기반으로 선택한 값을 변경하는 방법은 무엇입니까?

그래서 "cvsnumbers"라는 회사의 임시 테이블에서 company_code (id)와 전화 번호 2 개의 필드를 선택합니다.

main_number 필드의 값을 변경하려면 case 문을 추가해야합니다. 전화 번호가 이미 main_number = 1 인 번호가있는 경우 새 전화 번호에 0을 삽입해야하지만 main_number가 없으면 새 전화 번호에 1을 입력하여 계정의 기본 전화 번호로 지정해야합니다.

내 쿼리입니다

SELECT ac.account_id, 
      REPLACE(REPLACE(REPLACE(REPLACE(ta.phone_number, '-', ''), ' ', ''), ')', ''),'(','') AS Phone, 
      IFNULL(ta.ext, '') AS extention, 
      IFNULL(ta.main_number, 0) AS MainNumber, 
      ta.type AS contact_type, 
      '2' AS created_by 
     FROM cvsnumbers AS ta 
INNER JOIN accounts AS ac ON ac.account_id = ta.company_code 
    WHERE LENGTH(REPLACE(REPLACE(REPLACE(REPLACE(ta.phone_number, '-', ''), ' ', ''), ')', ''),'(','')) = 10 
     AND REPLACE(REPLACE(REPLACE(REPLACE(ta.phone_number, '-', ''), ' ', ''), ')', ''),'(','') NOT IN (SELECT contact_number FROM contact_numbers) 

내 문제는 내가 company_code 이미 main_number이 있거나없는 경우 경우 한 Statment 확인할 것을 일부에 그 변경하려면

`IFNULL(ta.main_number, 0) AS MainNumber,` 

입니다.

어떻게 변경할 수 있습니까?

감사

+0

''company_code''에 이미''main_number''가 있는지 어떻게 확인 하시겠습니까? – mzedeler

+0

사례 번호 main_number = 1 THEN 0 ELSE 1 END. 하지만이 경우에는 일종의 하위 쿼리를 수행하여 company_code에 main_number = 1이있는 숫자가 있는지 확인해야합니다. – Mike

+0

그러면 테이블의 모든 기본 전화 번호가 나열됩니다. SELECT contact_number FROM contact_numbers where main_number = 1 – Mike

답변

0

나는 당신의 쿼리처럼 보이게하는 방법을 정확히 확인 아직 아니지만, 어떻게 theese 라인을 따라 뭔가에 대해?

SELECT CASE 
      WHEN EXISTS (SELECT * 
          FROM contact_numbers 
          WHERE main_number = 1 
          AND contact_number = 
          <insert contact number from outer expression here>) 
      THEN 1 
      ELSE 0 
     END AS MainNumber 
    FROM ... 
+0

고마워요. if 문에 대한 case 문 작성 방법을 알고 있습니다. 하지만 어떻게 해야할지 모르겠다. 내 선택 진술 문 동안 모든 기록을 확인해 보라. – Mike

+0

고마워. 나는 그것을 시험해보고 너희에게 알릴 것이다. – Mike

+0

마침내 시험 할 기회가 생겼다. 대단히 감사합니다 :) – Mike