이 쿼리를 실행하면 모든 [데이터]. * 값이 NULL로 나타납니다. 나는 각 [data].levelX_id = 0
이전 1=1 AND
을 추가하는 경우 은 잘 작동, 그냥 테스트,SQL-CE 가능한 버그?
SELECT
[map].*,
[data].*
FROM
f_normalised_report_hierarchy AS [map]
LEFT JOIN
f_normalised_report_data AS [data]
ON (([data].level1_id = [map].level1_id) OR ([data].level1_id = 0))
AND (([data].level2_id = [map].level2_id) OR ([data].level2_id = 0))
AND (([data].level3_id = [map].level3_id) OR ([data].level3_id = 0))
AND (([data].level4_id = [map].level4_id) OR ([data].level4_id = 0))
AND (([data].level5_id = [map].level5_id) OR ([data].level5_id = 0))
AND (([data].level6_id = [map].level6_id) OR ([data].level6_id = 0))
AND ([data].metric_id = 22)
WHERE
[map].level1_id = 22
그러나 년대 *
무시!?!?
SELECT
[map].*,
[data].*
FROM
f_normalised_report_hierarchy AS [map]
LEFT JOIN
f_normalised_report_data AS [data]
ON (([data].level1_id = [map].level1_id) OR (1=1 AND [data].level1_id = 0))
AND (([data].level2_id = [map].level2_id) OR (1=1 AND [data].level2_id = 0))
AND (([data].level3_id = [map].level3_id) OR (1=1 AND [data].level3_id = 0))
AND (([data].level4_id = [map].level4_id) OR (1=1 AND [data].level4_id = 0))
AND (([data].level5_id = [map].level5_id) OR (1=1 AND [data].level5_id = 0))
AND (([data].level6_id = [map].level6_id) OR (1=1 AND [data].level6_id = 0))
AND ([data].metric_id = 22)
WHERE
[map].level1_id = 22
내가 거의 그것이 작동되도록하는 퍼지으로 그와 함께 살 수 있지만, 지금 실행하는 데 영원히 소요됩니다. (6 분이 지났을 때 1 초 미만에서 '계속 달리다'까지)
나는 바인딩됩니까? 아니면 SQL CE가 로커가 아닌가?
편집
나는 조건을 반전하는 경우 :
AND (([data].level6_id = [map].level6_id) OR ([data].level6_id = 0))
AND (([data].level6_id = 0) OR ([data].level6_id = [map].level6_id))
에 그때 다른 동작을 얻을.
대신 내가 사용하는 경우 IN
는 :
AND ([data].level6_id IN ([map].level6_id,0))
나는 아직도 다른 동작을 얻을. 확실히 내가 코딩하지 어떤 의미, 그리고 행동의
없음.
조건에있는 표현식이 모두 null입니까? – bobs
아니요. 만약 그들이 (1 = 1 AND NULL = 0)했다면 여전히'NULL'을 줄 것입니다. – MatBailie
샘플 데이터를 얻을 수 있습니까? –