![](/img/trans.png)
[英]How to select items from one table based on HABTM relation in another? Postgres “ALL” does not work,
[英]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.