[英]JOIN applies to only one table?
我正在嘗試從三個表中編譯用戶項目權限。 我想出了下面的SQL代碼:
SELECT U.UserName,
G.Name,
(SELECT PROJ.Name
FROM [test 2].dbo.Projects as PROJ
WHERE PROJ.ProjectID = PERM.ProjectID) AS Project
FROM [test 2].dbo.tbl_Sp_Users AS U
JOIN [test 2].dbo.tbl_Sp_UserGrps AS G
ON U.DefGroupID=G.ID
JOIN [test 2].dbo.tbl_ss_Permission_Project AS PERM
ON U.ID = PERM.UserID
ORDER BY U.UserName ASC;
在我看來, JOIN
工作方式是選擇一個表並將其鏈接到其他表。 但是,如果我的主表沒有直接鏈接,該怎么辦? 我在第三欄中使用SELECT
語句解決了這個問題。 那是最好的方法嗎?
最后,另一個相關的簡單問題。 如何按第三列排序? 它不會讓我ORDER BY
Project ,這是我擁有該列的別名。
看起來您想要左加入。 左聯接與普通(INNER)聯接具有相同的功能,但是如果沒有匹配項,它將仍然拉入父記錄。
嘗試這個:
SELECT
U.UserName
,G.Name
,proj.name
FROM
[test 2].dbo.tbl_Sp_Users U
inner JOIN [test 2].dbo.tbl_Sp_UserGrps G ON U.DefGroupID=G.ID
inner JOIN [test 2].dbo.tbl_ss_Permission_Project PERM ON U.ID = PERM.UserID
left join [test_2].dbo.Projects proj ON proj.projectid = PERM.projectid
ORDER BY
U.UserName ASC;
SELECT U.UserName,
G.Name,
PROJ.Name
FROM [test 2].dbo.tbl_Sp_Users AS U
JOIN [test 2].dbo.tbl_Sp_UserGrps AS G
ON U.DefGroupID=G.ID
JOIN [test 2].dbo.tbl_ss_Permission_Project AS PERM
ON U.ID = PERM.UserID
LEFT JOIN [test 2].dbo.Projects AS PROJ
ON PROJ.ProjectID = PERM.ProjectID
ORDER BY U.UserName ASC;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.