2013-03-04 5 views
1

여러 개의 select 절을 where 절과 함께 만드는 방법을 알아내어 내 이름 필드에 세 개의 시나리오 각각에 대한 열이 있습니다.Mysql, 여러 값, 다른 조건에 대해 동일한 열을 선택했습니다.

내가 지금 가지고있는 쿼리는 : 나는 기본적으로 내가 하나에 세 개의 쿼리를 결합하고 열을 유지하려는 (다음과 같은 조건으로 같은 쿼리에 다른 두 개의 열을 끌어 수있는 방법

SELECT 
    pd_extrafields.packetDetailsId, 
    pd_extrafields.ex_value as Credit 
    FROM 
    pd_extrafields 
    where pd_extrafields.ex_title = "Credit,A,B,C,D,E,F" 

이름) :

SELECT 
    pd_extrafields.packetDetailsId, 
    pd_extrafields.ex_value as AccountNum 
    FROM 
    pd_extrafields 
    where pd_extrafields.ex_title = "Account#" 

&

SELECT 
    pd_extrafields.packetDetailsId, 
    pd_extrafields.ex_value as OrderStat 
    FROM 
    pd_extrafields 
    where pd_extrafields.ex_title = "New/Existing" 

답변

1

U se CASE.

select packetDetailsId, GROUP_CONCAT(Credit) AS Credit, GROUP_CONCAT(AccountNum) AS AccountNum, GROUP_CONCAT(OrderStat) AS OrderStat FROM 
(SELECT pd_extrafields.packetDetailsId, 
    CASE WHEN pd_extrafields.ex_title LIKE ('%Credit%') 
    THEN pd_extrafields.ex_value ELSE NULL END as Credit, 
    CASE WHEN pd_extrafields.ex_title LIKE ('%Account%') 
    THEN pd_extrafields.ex_value ELSE NULL END as AccountNum, 
    CASE WHEN pd_extrafields.ex_title LIKE ('%Existing%') 
    THEN pd_extrafields.ex_value ELSE NULL END as OrderStat 
    FROM pd_extrafields) AS TempTab GROUP BY packetDetailsId 
+0

빠른 답장을 보내 주신 Ravindra에게 감사드립니다. 그것은 거의 작동, 나는 오류가 발생하고 "OrderStat"후 쉼표를 제거하지만 그것은 그 열에 대한 값을 반환하지 않는 것 같습니다. 또한 결과가 'packetDetailsId'당 하나의 행/행에 나타나도록 통합/그룹화하는 방법이 있습니까? – alex

+0

지적 해 주셔서 감사합니다. 내 검색어를 수정했습니다. 난 당신이 다른 행에 동일한 패킷 세부 정보 ID가 없다면 패킷 세부 ID 당 하나의 행이 표시됩니다 생각합니다. 그렇지 않니? 당신이 얻는 결과는 무엇입니까? –

+0

다음은 SQL 피들에 대한 링크입니다. http://sqlfiddle.com/#!2/fa2a3/1 또한 OrderStat 컬럼에 대한 출력을 포함하지 않습니다. – alex

관련 문제