こんばんは、
下の画像のようなテーブルレイアウトがあります。Userテーブルには、ほとんどの情報が格納されています。ユーザーごとに、未定の数のプリファレンスと場所の選択を行うこともできます。これらは、画像に示すようにジャンクション テーブルに格納されます。
管理者がレポートを作成する場合、設定と場所の選択をフィルターのように使用します。たとえば、Preference1 と Preference3、および UserLocation2 と UserLocation4 を選択すると、レポートには、少なくとも 1 つの設定と少なくとも 1 つの場所を持つユーザーのみが表示されます。1 つの SQL 選択ステートメントでこれを行うことは可能ですか? SQL Server 2008 R2 を使用しています。
ユーザー レコードが上記に従って返される資格があると仮定すると、すべての設定と場所を新しい列に連結して表示する方法はありますか。個々のユーザーに対して連結された結果を取得する方法を理解しましたが、同じ SQL 選択ステートメントの一部としても実行できるかどうか疑問に思います。
これは、個々の UserID について、コンマ区切りの設定を返すために私が持っているものです...
DECLARE @concatlist VARCHAR(MAX)
SELECT @concatlist = COALESCE(@concatlist+', ', '') + dbo.Preference.Title
FROM dbo.UserPreference
LEFT OUTER JOIN dbo.Preference
ON dbo.UserPreference.PreferenceID = dbo.Preference.PreferenceID
WHERE dbo.UserPreference.UserID = 5
SELECT @concatlist as OutputColumn
どんな指針も素晴らしいでしょう。私はこれに半日を費やしましたが、部分的にはできますが、1 つのステートメントでそれを行う方法を見つけることができません。
ありがとう、