私はトレーニング プログラムに取り組んでいますが、SQL クエリを理解できないところまで来ています。userProfilesTbl、trainingTbl、userAssessmentTbl、setsTbl userProfilesTbl と userAssessmentsTbl は、一意の ID フィールド タイプである UserId fkey を介して関連付けられています。
trainingTbl と userAssessmentTbl は、tt_id fkey INT フィールド タイプによって関連付けられます。setsTbl と trainingTbl は、s_id fkey INT フィールド タイプによって関連付けられます。
trainingTbl には、指定されたユーザー グループによって指定された日付に実行されたトレーニングが入力されます。
userAssessmentTbl は、個々のユーザーのトレーニング (結果、メモなど) によって入力されます。
userProfilesTbl は、メンバーシップとロールのフレームワーク (aspnet_users テーブルに接続) に含まれていないすべての追加ユーザー情報を保持します。
setsTbl には、さまざまなタイプのトレーニングのリストが入力されます。
トレーニングを行ったかどうかに関係なく、すべてのトレーニング セットとユーザーを表示したいと考えています。
Gridview (PIVOT テーブル) は、userProfilesTbl から surName、setsTbl から setName、userAssessmentTbl から結果 (値) を返す必要があります。
現在、2つの選択ステートメントがあります
トレーニング結果なしで setName と surname を表示します
Dim query As String = "SELECT * FROM userProfilesTbl LEFT OUTER JOIN userAssessmentTbl ON userProfilesTbl.UserId = userAssessmentTbl.UserId LEFT OUTER JOIN trainingTbl ON userAssessmentTbl.tt_id = trainingTbl.tt_id LEFT OUTER 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
は、トレーニングを行ったユーザーのトレーニング結果 setName、姓のみ、および彼らが実施したトレーニングのみを示します。他のすべてのユーザーとトレーニングは表示されません。
SELECT * FROM userProfilesTbl, setsTbl, userAssessmentTbl, trainingTbl WHERE (userProfilesTbl.UserId = userAssessmentTbl.UserId) AND (userAssessmentTbl.tt_id = trainingTbl.tt_id) AND 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
何か提案がありませんか?