私は3つのテーブルを持っています。それらは内部結合されています。3つのテーブルすべてから選択すると、デカルト積が得られます。
私はdistinctを使用し、トップ1とのクロスアプライを試しました。トップ1は適切な量のレコードを返しますが、その選択されたトップNで使用されるフィールドを繰り返します。
基本的な質問。3つの異なるテーブルから選択して、デカルト結果を回避できますか?3つのテーブルすべてを結合することができ、デカルトなしで2つのテーブルからレコードを取得できます。デカルトが表示されるのは、3分の1から選択することを選択したときです。
これが可能な場合、他にどのようなtsqlコマンド/コンストラクトを試す必要がありますか? http://imageshack.us/f/255/50353790.png/
SELECT CRT.[TransactionID]
,CRT.[creditrewardsID]
,CRT.[OwnerID]
, CRT.[TransactionDate]
,CRT.[ItemID]
,CRT.[VALUE]
,CRM.First
,CRM.MI
,CRM.Last
,CTI.fn
,CTI.ln
FROM [ownership].[dbo].[creditrewardsTransactions] CRT
Join [ownership].[dbo].[creditrewardsMembers] CRM
on CRT.creditrewardsid = CRM.[creditrewardsID]
Join [Exchange].[dbo].[CreditTourInfo] CTI
on CRM.CRMemberNum = CTI.PRIMECRPNum
--where CRT.creditrewardsID = 11111