久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

SQL:從單個(gè)查詢中列出多對(duì)多

SQL: listing many-to-many from single query(SQL:從單個(gè)查詢中列出多對(duì)多)
本文介紹了SQL:從單個(gè)查詢中列出多對(duì)多的處理方法,對(duì)大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!

問題描述

我有 3 個(gè)表,分別代表Users"、Roles"和多對(duì)多的UsersInRoles"——鍵為:UserId、RoleId;相關(guān)列:UserName、RoleName

I've got 3 tables representing "Users", "Roles", and the many-to-many "UsersInRoles" - with keys: UserId, RoleId; pertinant columns: UserName, RoleName

在 admin html 應(yīng)用程序中,我想顯示所有用戶及其所在角色的列表.我試圖從 SQL 構(gòu)建一個(gè)將返回此信息的查詢.應(yīng)該對(duì)角色列表進(jìn)行分隔,以便我可以進(jìn)行適當(dāng)?shù)难菔静僮?取決于演示平臺(tái),例如用 BR 標(biāo)記替換分隔符).

In the admin html app, I want to show a list of all users and the roles they are in. From SQL, I'm trying to construct a single query that will return this information. The list of roles should be delimited so I can do the appropriate presentation manipulation (depending on presentation platform, like replace delimiter with BR tag).

對(duì)用戶列表使用一個(gè)選擇,然后為每個(gè)用戶單獨(dú)選擇來獲取角色是很簡單的,但是嘗試構(gòu)建一個(gè)輸出以下內(nèi)容的選擇讓我感到困惑.

Using one select for the list of users and then individual selects for each user to get the roles is straight-forward, but trying to construct a single select that outputs the below has got me stumped.

UserId  UserName  Roles
------  --------  -----
1       user1     Admin,Guest,PowerUser
2       user2     Guest
3       user3
4       user4     PowerUser,Guest

提前致謝,
--埃德

Thanks in advance,
--Ed

--編輯--
現(xiàn)在使用以下查詢(感謝所有人,特別是 Raymund & 他的博客):

WITH RolesList AS
(
  SELECT u.UserName,
  (
    SELECT r.RoleName + ',' AS 'data()'
    FROM Roles r
    JOIN UsersInRoles ur ON ur.RoleId = r.RoleId
    WHERE ur.UserId = u.UserId FOR XML PATH('')
  ) AS RolesCSV
  FROM Users u
) SELECT UserName, LEFT(RolesCSV, LEN(RolesCSV)-1) AS RolesCSV FROM RolesList

推薦答案

這是您的解決方案:

轉(zhuǎn)換/將行解析為 SQL 中的分隔字符串列

編輯

如果您需要進(jìn)一步澄清,這里是答案

If you need further clarity here is the answer

WITH UserList as
(
SELECT UserID, UserName,
(SELECT 
RoleName + ',' AS 'data()'
FROM Roles
INNER JOIN 
UsersInRoles 
ON 
Roles.RoleID = UsersInRoles.RoleID
WHERE
UsersInRoles.UserID = Users.UserID FOR XML PATH('')) AS RoleCSV
FROM Users
)
SELECT UserID, UserName, LEFT(RoleCSV, LEN(RoleCSV)-1) as RoleCSV from UserList

這篇關(guān)于SQL:從單個(gè)查詢中列出多對(duì)多的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

【網(wǎng)站聲明】本站部分內(nèi)容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請(qǐng)聯(lián)系我們刪除處理,感謝您的支持!

相關(guān)文檔推薦

Converting Every Child Tags in to a Single Column with multiple Delimiters -SQL Server (3)(將每個(gè)子標(biāo)記轉(zhuǎn)換為具有多個(gè)分隔符的單列-SQL Server (3))
How can I create a view from more than one table?(如何從多個(gè)表創(chuàng)建視圖?)
Create calculated value based on calculated value inside previous row(根據(jù)前一行內(nèi)的計(jì)算值創(chuàng)建計(jì)算值)
How do I stack the first two columns of a table into a single column, but also pair third column with the first column only?(如何將表格的前兩列堆疊成一列,但也僅將第三列與第一列配對(duì)?) - IT屋-程序員軟件開發(fā)技
Recursive t-sql query(遞歸 t-sql 查詢)
Convert Month Name to Date / Month Number (Combinations of Questions amp; Answers)(將月份名稱轉(zhuǎn)換為日期/月份編號(hào)(問題和答案的組合))
主站蜘蛛池模板: 欧美日韩在线观看一区 | 日日天天 | 最新免费av网站 | 日韩成人精品一区 | 国产精品a级 | 在线免费观看毛片 | 黄色毛片在线观看 | 久久最新| 欧美日韩综合 | 成人av片在线观看 | 无码国模国产在线观看 | 国产精品日韩欧美一区二区三区 | 国产一级在线观看 | 国产精品久久久久久久久久免费看 | 日韩精品一区二区三区在线播放 | 精品久久久久久红码专区 | 在线观看深夜视频 | 精品一区二区三区在线观看 | 国产欧美日韩一区 | 九九在线视频 | 精品一区二区三区在线视频 | 久久成人在线视频 | 97精品视频在线观看 | 国产一区二区在线免费视频 | 免费激情网站 | 成人精品视频在线观看 | 国产免费拔擦拔擦8x高清 | 精品久久一区 | 亚洲黄色av网站 | 本地毛片 | 玖玖综合网| 亚洲成人三区 | 婷婷狠狠| 亚洲一区二区黄 | 日本手机在线 | 黄色大片网 | 欧美亚洲国语精品一区二区 | 毛片免费在线 | 99久久精品免费 | 最新一级毛片 | 中文字幕专区 |