-1

我正在使用这个查询:

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 个结果。我要做的是添加与我的 PublicationsAreaBuy 表的联合,该表包含一个 PublicationID 和一个 ABID(区域购买 ID)。我要做的是,如果上述查询返回区域购买表中的发布ID,那么我需要包含(这就是我使用联合的原因)区域购买ID作为发布ID。

这是我的最后一次尝试,但无论顶部查询是否返回结果,它都会再次返回 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
4

1 回答 1

1

很抱歉,我无法准确理解您的问题是什么,但我想知道您的问题是否源于“UNION”运算符将消除重复行(有点像“SELECT DISTINCT”超过组合询问)。如果您不想要这种行为,请改用“UNION ALL”。

我马上注意到的另一件事是这部分:“(pat.LastAdDate > 7 / 1 / 2009)”。看起来很像您正在尝试将“LastAdDate”与硬编码的日期值进行比较。实际上,您将“LastAdDate”与 7 除以 1 除以 2009 的值进行比较。由于这是整数除法,因此您的表达式本质上是“(pat.LastAdDate > 0)”。

如果您真的想与硬编码的日期进行比较,则需要将日期值放在单引号中,例如“(pat.LastAdDate > '7/1/2009')”。在生产应用程序中,硬编码日期不是一个好主意,但我认为这只是为了测试/调试目的。

于 2009-07-08T20:33:50.343 回答