重複するレコードを作成せずに3つのテーブルを結合する方法を理解できない。正しくジョインしてグループ化する方法
私は私の最初のテーブルプロファイルを使用するクエリ、および田部の楽器を持っている:
SELECT
[p].[shopper_id]
, [pi].[instrument_id]
FROM
[dbo].[profile] [p]
INNER JOIN [dbo].[profile_instruments] [pi]
ON [pi].[PID] = [p].[PID]
WHERE
[p].[date_created] > DATEADD(yy, -2, GETDATE())
AND [p].[shopper_id] = '53D5444535434747A935E207C9EDD96A'
ORDER BY
[p].[shopper_id];
このクエリは私に結果を提供します:
shopper_id instrument_id
53D5444535434747A935E207C9EDD96A 35
53D5444535434747A935E207C9EDD96A 17
私の2番目のクエリは、テーブルプロファイルと表スタイルを使用しています。
をSELECT
[p].[shopper_id]
, [ps].[style_id]
FROM
[dbo].[profile] [p]
INNER JOIN [dbo].[profile_styles] [ps]
ON [ps].[PID] = [p].[PID]
WHERE
[p].[date_created] > DATEADD(yy, -2, GETDATE())
AND [p].[shopper_id] = '53D5444535434747A935E207C9EDD96A'
ORDER BY
[p].[shopper_id];
結果は次のとおりです。
01私は3つのテーブルプロファイル、楽器やスタイルを組み合わせるとshopper_id style_id
53D5444535434747A935E207C9EDD96A 845
53D5444535434747A935E207C9EDD96A 291
は:
SELECT
[p].[shopper_id]
, [pi].[instrument_id]
, [ps].[style_id]
FROM
[dbo].[profile] [p]
INNER JOIN [dbo].[profile_instruments] [pi]
ON [pi].[PID] = [p].[PID]
INNER JOIN [dbo].[profile_styles] [ps]
ON [ps].[PID] = [p].[PID]
WHERE
[p].[date_created] > DATEADD(yy, -2, GETDATE())
AND [p].[shopper_id] = '53D5444535434747A935E207C9EDD96A'
ORDER BY
[p].[shopper_id];
私は結果を得る:私はわからないですので、私はまだして、グループを使用していない
shopper_id instrument_id style_id
53D5444535434747A935E207C9EDD96A 35 845
53D5444535434747A935E207C9EDD96A 35 291
53D5444535434747A935E207C9EDD96A 17 845
53D5444535434747A935E207C9EDD96A 17 291
どのように私が持っているコラムでそれを適用してください。私はまた、私が使用している結合のタイプのため、または私がグループを使用していないために重複があるかどうか不明です。いずれにしても
、私は私がどのように見えるの出力を持つために作るために必要なものを私のクエリへの変更を見つけ出すことができるようにいくつかの助けを賜りますようお願い申し上げ:
shopper_id instrument_id style_id
53D5444535434747A935E207C9EDD96A 35 845
53D5444535434747A935E207C9EDD96A 17 291
ありがとうございましたあなたの助けのために事前に。
instrument_ID 35がstyle_ID 845ではなく291であることをどのように知っていますか?この関係を定義する関連付けが不足しているだけです。それがなければ、あなたが見ている4つの結果が得られます。だから、最後の参加には、PSとPSが必要ですか? = PI。???どちらの楽器とどのスタイルの結びつきを示すか。重要でない場合は、各レコードに行番号を割り当てて行番号に結合することができますが、これは両方の表が買い物客あたりのレコード数が同じであることを前提としています。 – xQbert
これらはお互いに独立しています。プロファイルとインストゥルメント、プロファイルとスタイルとの間には関係がありますが、インストゥルメントとスタイルの間には関係がありません。 –
35が291の代わりに845にどうなるのか?繰り返しますが、この例では2レコードの予想結果がどのように得られているのか分かりません。実際に行数よりも重要でない場合は、数の概念が有効です。各テーブルのレコード数が同じであると仮定したり、買い物客1人あたりのレコード数が同じでない場合は、外部結合を使用する必要があります。 – xQbert