質問
[OK]を、ここで私の元の質問だった。
表の1が含まれている
ID|Name
1 Mary
2 John
表2に含まれている
ID|Color
1 Red
1 Blue
2 Blue
2 Green
2 Black
私はで終わるしたい。
でありますID|Name|Red|Blue|Green|Black
1 Mary Y Y
2 John Y Y Y
表1のレコードの1000の時に色と1000のための11個のユニークな値があるので、これを行うには「良い」方法がないことと思われます。だから、他の二つの質問ます。
この結果を得るために照会する効率的な方法はありますか?私はその後、望ましい結果を得るために、私のアプリケーションでクロス集計を作成することができます。
ID|Name|Color
1 Mary Red
1 Mary Blue
2 John Blue
2 John Green
2 John Black
私はレコードの数を制限したい場合は、私はこのような何かを行うには、クエリを行うことができどのように返される?
Where ((color='blue') AND (color<>'red' OR color<>'green'))
だから私は当時なるだろう上記の例を使用して
ID|Name|Color
1 Mary Blue
2 John Blue
2 John Black
私は、SQLを使用するADODBを経由してVisual FoxProテーブルに接続します。ありがとう!
解決
あなたの前に質問、およびVFPテーブルに対するクエリからは、あなたがして、結果を得ることができます 次VFP修飾クエリ...クロスタブ完全な
select
N.ID,
N.Name,
MAX( IIF( C.Color = "Red", "Y", " " )) Red,
MAX( IIF( C.Color = "Blue", "Y", " " )) Blue,
MAX( IIF( C.Color = "Green", "Y", " " )) Green,
MAX( IIF( C.Color = "Black", "Y", " " )) Black
FROM
C_Names N,
Colors C
WHERE
N.ID = C.ID
GROUP BY
N.ID,
N.Name
次に、あなたが他の「色」を持っているように、単にパターンに従ってください...そのそれぞれの色のMAX(IIF())をコピーして、結果列名として列を持っています。唯一の問題は、色の異なる場合-sensitveスペルを持っている場合、その後、あなたはUPPER(C.Color)=「RED」(または他の色についても同様)。
する必要があるかもしれませんです他のヒント
あなたは、クロス集計クエリを作成しようとしています。
:あなたは、クロス集計クエリウィザードを使用しようとすることができ
http://msdn.microsoft.com/en-私たち/ライブラリ/ aa979431%28VS.71%29.aspxする
所属していません StackOverflow