我有一组名为(不是很好的规范化或关系型)的表 计划, 组, 产品 CLIENT
大多数都有联系,即 计划 - >客户端在clno上 PRODCD上的GROUP to PRODUCT
然而,PLAN和GROUP之间的联系是棘手的。计划有2个感兴趣的领域GRPNO和PRODCD。
我想要做的是如果GRPNO!= 0则在GRPNO上加入GROUP。但是,如果GRPNO = 0,那么我想在PRODCD上加入GROUP。
令人沮丧的是,我想在我的查询中返回的文件是相同的,我只需要能够改变连接,或者连接相同的表两次。
我能想到的最好的是2个查询,并使用数据集合并它们,或者可能使用联合。
在一个选择中有没有一种漂亮的方法可以做到这一点?
我应该指出我通过ODBC访问Foxpro来执行此操作。
谢谢!
答案 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更快,我会感到惊讶。