0

まず、これを読むために時間を割いていただきありがとうございます。タイトルを失礼します。問題の説明方法がよくわかりませんでした。

2つのテーブルがあります。1つはSystemUsers用で、もう1つはPrintingPermissions用です。

PrintingPermissionsテーブル

ID ---- SystemUserID --- PrintGroupTypeID --- CanPrint
1 ----------- 22 ----------------------- --1 ------------------- True

2 ----------- 22 -------------------------- 2 ---------- ---------本当

3 ----------- 22 ------------------------- 3 ----------- --------誤り

4 ----------- 23 ------------------------- 1 ----------- --------本当

SystemUsersテーブル

ID ----------- 名前
22-----------ロバート

23-----------ジョン

24-----------サイモン

25-----------ケイト

PrintingPermissions.PrintGroupTypeIDに基づいて、すべてのユーザーとそのユーザーおよびそのPrintPermissionsのリストを生成するselectクエリが必要です。注意すべき点は、ユーザーがPrintPermissionsテーブルにリストされていない場合でも、オブジェクトを作成したいのですが、CanPrintValueがFALSEまたはNULLであるということです。

つまり、WHERE PrintGroupTypeID = 1を選択した場合、上記の提供されたテーブルデータの出力は次のようになります。

結果(PrintGroupTypeID = 1の場合)

名前----- SystemUserID ----- CanPrint

ロバート---------22--------------------本当

ジョン-----------23---------------------本当

Simon --------- 24 --------------------- False //-権限テーブルにない、デフォルトでfalseが作成される

Kate ----------- 25 --------------------- False //-権限テーブルにありません。デフォルトでfalseが作成されます

繰り返しになりますが、お時間をいただきありがとうございました。私が達成しようとしていることを完全に理解していない場合は、お知らせください。

ロブ

4

3 に答える 3

1
SELECT DISTINCT su.Name, su.ID, ISNULL(pp.CanPrint, CAST 0 AS BIT) as CanPrint
FROM SystemUser su 
LEFT JOIN Printing Permissions pp ON su.ID = pp.SystemUserID AND pp.PrintGroupTypeID = @TargetPrintGroupTypeID

falseではなくnullが必要な場合は、ISNULL関数を省略して、CanPrintを直接選択することができます。これにより、3つの状態結果(true、false、null)が得られ、許可されていないユーザー(false)と印刷グループに含まれていないユーザー(null)を判別できます。

于 2012-12-10T15:40:15.540 に答える
1

どうですか:

Select s.name as name,
       s.id as SystemUserID,
       isnull(p.canprint, 'false') as CanPrint
  From systemusers s
  Left outer Join printingpermissions p on s.id = p.systemuserid
 Where p.printgrouptypeid = 1
于 2012-12-10T15:40:17.533 に答える
1

わかりました、私はちょうどそれを解決することができました。

クエリは次のとおりです。

SELECT        SystemUsers.Name, ISNULL(PrintingPermissions.CanPrint, 'FALSE') AS CanPrint
FROM            SystemUsers LEFT OUTER JOIN
                         PrintingPermissions ON SystemUsers.ID = PrintingPermissions.SystemUserID AND 
                         PrintingPermissions.PrintingGroupTypeID = @ID
于 2012-12-10T15:40:50.467 に答える