質問

[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する

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top