さまざまなテーブルの行データを列として表示するマトリックス レポートとして機能するビューを作成しています。連結によってこれを達成できると思いますが、少し行き詰まっています。私のクエリはうまく機能しますが、グリッドビューに表示される逆データテーブル (ピボットテーブル) を使用しています。現在取得しているのは、複数の値がすべて各セルに追加されていることです!
Set Name James Smith Jones
Training 1 9 5 7
Training 2 5 7 8
Training 3 12 10 9
アウトプットしたいのはこれ!
Set Name James Smith Jones
Training 1 3,1,2,3 2,3 5,2
Training 2 4,1 1,1,5 2,2,2,2
Training 3 1,4,4,3 2,2,2,4 1,3,2,3
ユーザーとトレーニングの間に多対多の関係があります。これは、1 人のユーザーが特定の期間にわたって複数の結果を伴うトレーニングのインスタンスを多数持つことができるためです。
このuserProfilesTbl
テーブルには、ASP.NET メンバーシップ、ロール、およびプロファイル テーブルからの追加のユーザー情報が格納されます。
• PK UserId (int)
• StaffNo (varchar)
• forename (varchar)
• surname (varchar)
• FK st_id (int)
このstoreTbl
テーブルは、グループ内のすべての店舗を参照します
• PK st_id (int)
• store (varchar)
• storeNo (varchar)
• FK d_id (int)
このshiftTbl
表は、さまざまなシフト パターンを参照しています。
• PK wa_id (int)
• Shift (varchar)
このuserAssessmentTbl
テーブルには、ユーザー、実施されたトレーニング、およびそのトレーニングの結果に関する情報が保持されます。o_id は、1、2、3、または 4 の 1 つの値のみにすることができます
• PK ti_id (int)
• FK UserId (UID)
• FK tt_id (int)
• o_id (int)
• n_id (int)
このsetTbl
表は、各トレーニング コースの名前です。
• PK s_id (int)
• setName (varchar)
• instruction (varchar)
• link (varchar)
• setNo (int)
これは私の sql クエリ文字列ですLEFT JOIN
。以下の SQL を使用してテーブルでプレーン を実行すると、1 人の人物に関連する複数の行が取得されます。
Dim query As String = "SELECT *
FROM userProfilesTbl
LEFT JOIN storeTbl ON userProfilesTbl.st_id = storeTbl.st_id
LEFT JOIN shiftTbl ON userProfilesTbl.wa_id = shiftTbl.wa_id
LEFT JOIN userAssessmentTbl ON userProfilesTbl.UserId = userAssessmentTbl.UserId
LEFT JOIN trainingTbl ON userAssessmentTbl.tt_id = trainingTbl.tt_id
LEFT JOIN setsTbl ON trainingTbl.s_id = setsTbl.s_id
WHERE userProfilesTbl.st_id=@st_id
AND userProfilesTbl.wa_id=@wa_id
AND DATEPART(mm,t_date) = @m_date
AND DATEPART(yyyy,t_date) = @y_date
ORDER BY surname ASC"
何か案は?