条件连接 - 以2种方式连接1个表

时间:2013-10-21 09:50:34

标签: c# sql join foxpro

我有一组名为(不是很好的规范化或关系型)的表 计划, 组, 产品 CLIENT

大多数都有联系,即 计划 - >客户端在clno上 PRODCD上的GROUP to PRODUCT

然而,PLAN和GROUP之间的联系是棘手的。计划有2个感兴趣的领域GRPNO和PRODCD。

我想要做的是如果GRPNO!= 0则在GRPNO上加入GROUP。但是,如果GRPNO = 0,那么我想在PRODCD上加入GROUP。

令人沮丧的是,我想在我的查询中返回的文件是相同的,我只需要能够改变连接,或者连接相同的表两次。

我能想到的最好的是2个查询,并使用数据集合并它们,或者可能使用联合。

在一个选择中有没有一种漂亮的方法可以做到这一点?

我应该指出我通过ODBC访问Foxpro来执行此操作。

谢谢!

1 个答案:

答案 0 :(得分:1)

你可以这样做:

JOIN GROUP AS G ON
(PL.GRPNO = 0 AND G.PRODCD = PL.PRODCD) OR
(PL.GRPNO !=0 AND G.GRPNO = PL.GRPNO)

然而,如果这比使用UNION ALL更快,我会感到惊讶。