このクエリを実行すると、[data]。*の値はすべて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
私はほとんどそれを動作させるためにファッジとしてそれと一緒に暮らすことができ、それが今で実行するように永遠にかかります。 (1秒未満から6分後に「まだ稼働中」まで)
私はバインドされていますか?それとも、SQL CEがロッカーであるのですか?
EDIT
私は条件を逆にした場合:
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
Nope。彼らが '(1 = 1 AND NULL = 0) 'を実行しても、' NULL'を返すでしょう。 – MatBailie
サンプルデータを取得できますか? –