0

PLAN、GROUP、PRODUCT CLIENT という名前の (あまり正規化されていない、またはリレーショナルではない) テーブルのセットがあります。

ほとんどの場合、clno GROUP の PLAN -> CLIENT から PRODCD の PRODUCT へのリンケージがあります。

ただし、PLAN と GROUP のリンクはややこしいです。計画には、GRPNO と PRODCD の 2 つの対象フィールドがあります。

私がやりたいことは、GRPNO != 0 の場合、GRPNO で GROUP に参加することです。ただし、GRPNO = 0 の場合、PRODCD で GROUP に参加したいと考えています。

イライラするのは、クエリで返したいフィールドが全体的に同じであることです。結合を変更するか、同じテーブルを 2 回結合する必要があるだけです。

私が思いつく最善の方法は、2 つのクエリを作成し、データセットを使用して、または場合によってはユニオンを使用してそれらをマージすることです。

1回の選択でこれを行う気の利いた方法はありますか?

これを行うには、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 に答える