0

我有一组(不是很好的规范化或关系)表,名为 PLAN、GROUP、PRODUCT CLIENT

大多数都有链接,即 clno GROUP 上的 PLAN -> CLIENT 到 PRODCD 上的 PRODUCT

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

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

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

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

有没有一种巧妙的方法可以在一次选择中做到这一点?

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

谢谢!

4

1 回答 1

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 更快,我会感到惊讶。

于 2013-10-21T11:11:26.200 回答