2013-03-26 4 views
0

가 관련된 질문 Related question의 링크입니다 SQL에 많은 관계로 하나의 카운트 받기, 여기

이제

내가이 나에게 내가 원하는대로 정확하게 회사 이름을 제공하는 쿼리

QUERY

SELECT CASE WHEN COALESCE(b.totalCoupons, 0) > 3 THEN a.Name +'(Important) ' 
    WHEN IsHighPriority = 1 THEN a.Name +'(High Priority) ' 
    ELSE a.Name +'' 
END AS CompanyName 
FROM Company a 
LEFT JOIN 
(
    SELECT Name, COUNT(*) totalCoupons 
    FROM Company 
    GROUP BY Name 
) b ON a.name = b.name 

지금 내가 (important)의 시나리오에서 우리 회사가 더 후 3 개 쿠폰이있는 경우 다음 회사 이름의 (Important) 뿅를 추가 테스트하는 것을 원하지만 내가하고 싶은 것을을 경우 16,회사는

RejectProcessed = 0 and ReviewVerify = 0 and isPublish = 0 and ForSupervisor = 0 

그때 내가 특정 회사 이름의 중요한 뿅를 추가 할 더 후 3 개 쿠폰을 가지고있다. 그래서 내가 무엇을해야하니 .

세부 사항이 필요하면 언제든지 문의하십시오. 사전

+0

다음 거즈가 무엇 내 문제 해결? 'RejectProcessed','ReviewVerify', ..이 열, 행 또는 값입니까? –

+0

이들은'Coupon Table'에 있습니다. – user2193861

답변

1

이 쿼리는

SELECT CASE WHEN COALESCE(b.totalCoupons, 0) > 3 THEN company.Name +' (Important) ' 
     WHEN IsHighPriority = 1 THEN company.Name +' (High Priority) ' 
     ELSE company.Name +'' 
    END AS CompanyName , company.id as Companyid 
FROM Company company 
    left JOIN 
    (
     SELECT co.Name as coName, co.id as coid, COUNT(c.id) totalCoupons 
     FROM Company co, Coupon c 
     where c.CompanyId = co.id and c.RejectedProcessed = 1 and c.ReviewVerify = 0 and c.isPublish = 0 and c.ForSupervisor = 0 
     GROUP BY co.Name, co.id 
    ) b ON company.id = b.coid 
0

user2193861 @에서

감사 쿠폰은 회사의 테이블과 조인 왼쪽에 존재 ..?

LEFT JOIN 
(
    SELECT Name, COUNT(*) totalCoupons 
    FROM Coupon 
    GROUP BY Name 
) b ON a.name = b.name 
+0

나는이 쿼리를 작성하지 않았기 때문에 그것에 대해 많이 알지 못합니다. 관련 질문 링크에서 볼 수 있습니다. – user2193861

0

사용이 ..

SELECT CASE WHEN COALESCE(b.totalCoupons, 0) > 3 THEN a.Name +'(Important) ' 

WHEN IsHighPriority = 1 THEN a.Name +'(High Priority) ' 

ELSE a.Name +'' 

END AS CompanyName 

FROM Company a 

LEFT JOIN 

(

SELECT Name, COUNT(*) totalCoupons 

FROM Company C 

WHERE 

EXISTS(

     select 1 

     from coupon P 

     where P.RejectProcessed = 0 and P.ReviewVerify = 0 

     and P.isPublish = 0 and P.ForSupervisor = 0 

     and P.CompanyName = C.Name 

     ) 

and in second query.. 

use WHERE P.RejectProcessed = 0 and P.ReviewVerify = 0 

and P.isPublish = 0 and P.ForSupervisor = 0