Frage

Ich bin mit dieser Abfrage:

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

Und es gibt 0 Ergebnisse. Was ich versuche mit meinem PublicationsAreaBuy Tisch, zu tun ist, in einer Union hinzufügen, die eine publicationID enthält und einen ABID (Bereich kaufen id). Was ich versuche zu tun ist, wenn die obige Abfrage eine publicationID zurückgibt, die in den Bereich Kauftabelle ist dann muss ich sind (weshalb ich mit der Vereinigung war) das Gebiet ID als Publikation ID kaufen.

Dies war mein letzter Versuch, aber auch hier gibt es ein Ergebnis, ob die obere Abfrage ein Ergebnis zurückgibt oder nicht ... meiner Meinung nach auf diese ein völlig leer gegangen ist!

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
War es hilfreich?

Lösung

Es tut mir leid, dass ich nicht in der Lage bin, genau zu verstehen, was das Problem ist, aber ich frage mich, ob Ihr Problem rührt von der Tatsache, dass die „UNION“ Operator doppelte Zeilen beseitigen (Art wie ein „SELECT DISTINCT“ über die kombinierte Abfrage). Wenn Sie dieses Verhalten nicht wünschen, verwenden Sie „UNION ALL“ statt.

Etwas anderes ich sofort auffiel, war dieser Teil: "(pat.LastAdDate> 7/1 / 2009)". Es sieht ganz so aus wie Sie versuchen, „LastAdDate“ zu einem hartcodierte Datumswert zu vergleichen. In Wirklichkeit Sie „LastAdDate“ auf den Wert von 7 dividiert durch 1 geteilt werden, verglichen mit 2009. Da es sich um Integer-Division, Ihr Ausdruck ist im Wesentlichen „(pat.LastAdDate> 0)“.

Wenn Sie wirklich gegen ein hartcodierte Datum vergleichen wollen, müssen Sie den Datumswert in einfachen Anführungszeichen setzen, wie diese „(pat.LastAdDate>‚2009.07.01‘)“. In einer Produktionsanwendung sind hartcodierte Daten eine schlechte Idee, aber ich nehme an, dies nur zum Testen / Debuggen ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top