مشكلة SQL MS SQL Server V.8 النقابات
-
11-09-2019 - |
سؤال
أنا أستخدم هذا الاستعلام:
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، والذي يحتوي على منشور و ABID (معرف شراء المنطقة). ما أحاول القيام به هو إذا إرجاع الاستعلام أعلاه منشورا موجودا في منطقة شراء المنطقة، فأنا بحاجة إلى تضمين (وهذا هو السبب في أنني كنت أستخدم الاتحاد) معرف شراء المنطقة كمعرف منشور.
كانت هذه محاولتي الأخيرة، لكن مرة أخرى إرجاع 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 All" بدلا من ذلك.
شيء آخر لاحظته على الفور كان هذا الجزء: "(pat.lastaddate> 7/1/2009). يبدو أنك تحاول مقارنة "LastadDate" إلى قيمة تاريخية مشفرة. في الواقع، تقارن "LastadDate" بقيمة 7 مقسوما على 1 مقسوما على 2009. نظرا لأن هذا هو شعبة عدد صحيح، فإن تعبيرك هو أساسا "(pat.lastaddate> 0)".
إذا كنت ترغب حقا في المقارنة مع تاريخ مشدود بشدة، فأنت بحاجة إلى وضع قيمة التاريخ في علامات اقتباس واحدة، مثل هذا "(pat.lastaddate>" 7/1/2009 ")". في تطبيق الإنتاج، تعد التواريخ الشديدة المشفوفة فكرة سيئة، لكنني أفترض أن هذا ليس فقط لأغراض الاختبار / تصحيح الأخطاء.