2017-05-08 14 views
0

私は確かにこれらの種類の質問に悩まされていますが、私は本当にいくつかの助けが必要です。過去3時間の間、私はこのSQLクエリを見つめており、そのロジックの一部を説明することはできません。通常は私は聞いていませんが、締め切りに達しています。このSQLクエリを説明できません

WHERE句には、If構造が表示されます。私が見ることができるところから、ピッキング日付が有効かどうかをチェックします。

しかし、それはちょうど奇妙に見えますが、それはいつも「Between」という結果にはなりませんか? (If x > y AND x < z then 'Between', else 'Not Between) = 'Between'

このオブジェクトの「if」結果はどのオブジェクトにも適用されますか?すべてのヘルプは高く評価され、私は最終的な結果は、単に意味をなさないdoent WHERE 'Between' AND 'Between'を、となり、それを解釈する方法...

(P.S.クエリがアクセスのために書かれている)

SELECT 
    DWH_PickOrderLines_Temp.*, 
    IIf(DWH_PickOrderLines_Temp.WayOfTransport IN ("ON", "PD"), "Kitting " & Mid(tbl_District_Activiteit.Activiteit, 8), IIf(DWH_PickOrderLines_Temp.PickMethode IN ("K", "V"), "Picking Bulk", tbl_District_Activiteit.Activiteit)) AS Activiteit, 
    IIf(DWH_PickOrderLines_Temp.WayOfTransport IN ("ON", "PD"), "Kitting", tbl_District_Activiteit.[Activiteit groep]) AS [Activiteit groep], 
    R14_Distinct_Warehouse_Location.Proces, 
    R14_Distinct_Warehouse_Location.Gebouw 
FROM DWH_PickOrderLines_Temp 
LEFT JOIN R14_Distinct_Warehouse_Location 
    ON DWH_PickOrderLines_Temp.PickLocation = R14_Distinct_Warehouse_Location.PickLocation 
WHERE (((IIf([DWH_PickOrderLines_Temp].[PickDateTime] >= [R14_Distinct_Warehouse_Location].[tbl_Location_Zone_District.ValidFrom] 
AND [DWH_PickOrderLines_Temp].[PickDateTime] < [R14_Distinct_Warehouse_Location].[tbl_Location_Zone_District.ValidTo], "Between", "Not Between")) = "Between") 
AND ((IIf([DWH_PickOrderLines_Temp].[PickDateTime] >= [R14_Distinct_Warehouse_Location].[tbl_District_Activiteit.ValidFrom] 
AND [DWH_PickOrderLines_Temp].[PickDateTime] < [R14_Distinct_Warehouse_Location].[tbl_District_Activiteit.ValidTo], "Between", "Not Between")) = "Between")); 
+0

あなたは必ず完全に全体のクエリを報告していますか? (tbl_Location_Zone_Districtとtbl_District_Activiteitの結合はどこですか?) – etsa

+0

Jup、これは全体のクエリです。私は欠けている参加に気づいた。とにかくそれは動作するのですか? – TheNiers

+0

?私が主張することができるか、とにかく、あなたはそれを簡略化する必要があるため – etsa

答えて

0

どこが値を返すことはありません。それは複製されています....

0

私はクエリが一部を逃していると思います(上記の私のコメントを参照してください)。

WHERE [DWH_PickOrderLines_Temp].[PickDateTime] >= [R14_Distinct_Warehouse_Location].[tbl_Location_Zone_Distric‌​t.ValidFrom] 
     AND [DWH_PickOrderLines_Temp].[PickDateTime] < [R14_Distinct_Warehouse_Location].[tbl_Location_Zone_Distric‌​t.ValidTo] 
    AND [DWH_PickOrderLines_Temp].[PickDateTime] >= [R14_Distinct_Warehouse_Location].[tbl_District_Activiteit.V‌​alidFrom] 
     AND [DWH_PickOrderLines_Temp].[PickDateTime] < [R14_Distinct_Warehouse_Location].[tbl_District_Activiteit.V‌​alidTo] 
0

あなたは if文は常に「の間」につながると思いますなぜ:とにかく、私は条件場所を簡略化することができると思いますか?

は基本的には、条件がに沸く

where 
pickDateTime between validFrom1 and validTo1 
and 
pickDateTime between validFrom2 and validTo2 
関連する問題