簡體   English   中英

SQL怎么做? 從一個表中選擇所有項目,然后根據另一張表填充空白?

[英]SQL How To? Select all items from one table, and fill in the gaps based on another table?

首先,感謝您抽出寶貴的時間閱讀本文,請原諒標題,我不確定如何描述我的問題。

我有兩張桌子。 一個用於SystemUsers,另一個用於PrintingPermissions。

PrintingPermissions表

ID ---- SystemUserID --- PrintGroupTypeID --- CanPrint
1 ----------- 22 ------------------------- 1 ----------- - - - - 真正

2 ----------- 22 -------------------------- 2 ---------- - - - - -真正

3 ----------- 22 ------------------------- 3 ----------- - - - - 假

4 ----------- 23 ------------------------- 1 ----------- - - - - 真正

SystemUsers表

ID ----------- 名稱
22 -------羅伯特

23 -----------約翰

24 -----------西蒙

25 -----------凱特

我需要一個選擇查詢,該查詢將基於PrintingPermissions.PrintGroupTypeID生成所有用戶及其用戶和PrintPermissions的列表。 需要注意的是,如果“打印權限”表中未列出“用戶”,我仍然希望創建其對象,但是CanPrintValue為FALSE或NULL。

也就是說,當選擇WHERE PrintGroupTypeID = 1時,上面提供的表數據的輸出應類似於以下內容。

結果(WHERE PrintGroupTypeID = 1)

名稱 ----- SystemUserID ----- CanPrint

羅伯特--------- 22 --------------------正確

約翰----------- 23 ---------------------是

Simon --------- 24 --------------------- False //-不在權限表中,默認為false

凱特----------- 25 ---------------------錯誤//-不在權限表中,默認為false

再次感謝您的寶貴時間,如果您不完全了解我要達到的目標,請告訴我。

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

如果要使用null而不是false,則可以省略ISNULL函數,而直接選擇CanPrint。 這將為您提供三個狀態結果(true,false,null),並允許您確定哪些用戶不被允許(false)以及哪些用戶不在打印組中(null)。

怎么樣:

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

好的,我已經設法解決了。

這是查詢:

SELECT        SystemUsers.Name, ISNULL(PrintingPermissions.CanPrint, 'FALSE') AS CanPrint
FROM            SystemUsers LEFT OUTER JOIN
                         PrintingPermissions ON SystemUsers.ID = PrintingPermissions.SystemUserID AND 
                         PrintingPermissions.PrintingGroupTypeID = @ID

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM