私はスクリプト作成とSQLの新機能で、一部の連絡先管理ソフトウェアによって生成された狂ったデータベースを継承しました。私はMicrosoft SQL Server 2005を実行しています。私がしようとしているのは、特定の条件を満たす行を選択することです(BIRTHDATEは今日の日付ですが、これは私の問題のようです)。ここに私のコードは次のとおりです。SQLクエリ 'where'が期待どおりに動作しない
SELECT
TBL_CONTACT.BIRTHDATE,
TBL_CONTACT.COMPANYNAME,
TBL_CONTACT.CATEGORY,
CUST_ContactTable1_074000.CUST_DesignatedAgent_074203199,
TBL_EMAIL.ADDRESS
FROM
TBL_CONTACT,
CUST_ContactTable1_074000,
TBL_EMAIL
WHERE
TBL_CONTACT.BIRTHDATE >= DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0) AND
TBL_CONTACT.BIRTHDATE < DATEADD(day, DATEDIFF(day, 0, GETDATE()), 1) AND
TBL_CONTACT.CATEGORY = 'Active' AND TBL_EMAIL.ADDRESS IS NOT NULL AND
CUST_ContactTable1_074000.CUST_DesignatedAgent_074203199 IS NOT NULL
問題だけがあるはずにもかかわらず(マイナスレコードは=「アクティブ」の条件NULLとCATEGORY、NOTを満たしていない、それが表示されます)、それは私のデータベース内のすべての行を返すということです1つの行に正しいTBL_CONTACT.BIRTHDATEがあります。これらの行に今日の日付ではないBIRTHDATEがあるはずですが、リスト全体を処理する唯一の行のBIRTHDATEを入れています。私がそれを今日のものと一致する誕生日がないようにすると、何も返されません(これは私が期待するものです)。
私は間違っていますか?私が学んでいるように答えを説明してください。ありがとうございました!
フォーマットを持っており、適切にクエリーをインデント。 – Lion