문제

이 쿼리를 사용하고 있습니다.

SELECT DISTINCT pat.PublicationID
FROM         dbo.PubAdvTransData AS pat INNER JOIN
                  dbo.PubAdvertiser AS pa ON pat.AdvTransID = pa.AdvTransID
WHERE     (pa.AdvertiserID = 31331) AND (pat.LastAdDate > 7 / 1 / 2009)
ORDER BY pat.PublicationID

그리고 0 결과를 반환합니다. 내가하려고하는 것은 출판물과 Abid (Area Buy ID)가 포함 된 출판물 AreaBuy 테이블과 연합하는 것입니다. 내가하려고하는 것은 위의 쿼리가 지역 구매 테이블에있는 PublicationId를 반환하는 경우, (Union을 사용하고있는 이유), 지역 구매 ID를 게시 ID로 포함시켜야합니다.

이것은 나의 마지막 시도 였지만 다시 1 쿼리가 결과를 반환하는지 여부에 관계없이 1 결과를 반환합니다 ... 내 마음은 이것에 대해 완전히 비워졌습니다!

SELECT DISTINCT pat.PublicationID
FROM         dbo.PubAdvTransData AS pat INNER JOIN
                  dbo.PubAdvertiser AS pa ON pat.AdvTransID = pa.AdvTransID
WHERE     (pat.LastAdDate > 7 / 1 / 2009) AND (pat.PublicationID = 29171)
UNION
SELECT     AreaBuy.AreaBuyID AS PublicationID
FROM         AreaBuy INNER JOIN
                  PublicationAreaBuy ON AreaBuy.AreaBuyID =         PublicationAreaBuy.AreaBuyID INNER JOIN
                  dbo.PubAdvertiser AS PubAdvertiser_1 ON PubAdvertiser_1.PublicationID = PublicationAreaBuy.PublicationID
ORDER BY pat.PublicationID
도움이 되었습니까?

해결책

당신의 문제가 무엇인지 정확히 이해할 수 없어서 죄송하지만, 당신의 문제가 "Union"운영자가 중복 행을 제거한다는 사실에서 비롯된지 궁금합니다 (결합 된 것보다 "Select a Select" 질문). 이 행동을 원하지 않으면 대신 "Union All"을 사용하십시오.

내가 바로 알아 차린 것은이 부분이었다 : "(pat.lastaddate> 7 / 1 / 2009)". "LastAddate"를 하드 코딩 날짜 값과 비교하려고하는 것처럼 보입니다. 실제로 당신은 "LastAddate"를 7의 값으로 비교하여 1로 2009로 나눈 값으로 나눈 값을 비교하고 있습니다. 이것은 정수 부서이기 때문에 표현식은 본질적으로 "(Pat.lastaddate> 0)입니다.

하드 코딩 날짜와 비교하려면 다음과 같이 날짜 값을 단일 따옴표로 넣어야합니다. 프로덕션 응용 프로그램에서 하드 코딩 된 날짜는 나쁜 생각이지만, 이것이 단지 테스트/디버깅 목적이라고 가정합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top