【发布时间】:2010-07-21 20:31:33
【问题描述】:
我需要在满足某些条件时加入一个表,并在满足其他条件时左加入它。由于我在一个带有过滤器的 MS 动态 CRM 中,我不能使用 UNION
SELECT stuff.stuffs
FROM MainTable
JOINS othertable
LEFT JOIN othertables
LEFT JOIN TableX as X1 ON (Conditions1.1 = X1.1
AND MainTable.Type = 1)
JOIN TableX as X2 ON (Conditions2.2 = X2.2
AND MainTable.Type = 2)
- 如果我注释掉 X2 部分,我会从 X1 部分得到我需要的东西,而从 X2 中什么也得不到。
- 如果我 LEFT JOIN 加入 X2 部分,我在 X2 中有额外的信息。
- 如果我保持原样,我会从 X2 部分得到我需要的东西,但从 X1 中什么也得不到。
我尝试了一些变体,但无法找到令人满意的解决方案。
编辑:我原来的查询是这样的:
SELECT stuff.stuffs
FROM MainTable
(LEFT) JOIN TableX as X1
ON (Conditions1.1 = X1.1
AND MainTable.Type = 1)
OR
ON (Conditions2.2 = X2.2
AND MainTable.Type = 2)
但如果它是左连接,我会从 X2 获得额外的信息 和一个 JOIN 给我 X1 缺少的信息,
【问题讨论】:
-
我们可以看看最终的查询吗?我还不清楚你需要什么。
标签: sql sql-server sql-server-2005 dynamics-crm