一對多查詢跟顯示全路徑Sql

2022-03-20 12:33:57 字數 1181 閱讀 4354

表document跟documentsfolderitem是一對多的關係,即乙個document檔案可以放

多個document資料夾,那現在我想實現就是查詢出document記錄,但document不重複,sql的寫法如下:

select top 100 percent dbo.document.*

from dbo.document left outer join

dbo.documentsfolderitem on

dbo.document.docid = dbo.documentsfolderitem.docid and (folderid is null or

folderid in

(select max(folderid)

from dbo.documentsfolderitem where docid=document.docid

group by docid))

我還要實現乙個功能是,顯示folder的全路徑,

格式如下:parentfolder/childfolder

建立了乙個定義發函式,實現根據folderid返回所有上級路徑的資料夾名稱

create function getdocumentfolderpath(@folderid bigint)

returns nvarchar(1000)

asbegin

declare @s nvarchar(1000),@name nvarchar(20)

lab:

set @name =(select name from documentfolder where status <> -1 and  folderid=@folderid)

select @folderid=parentid from documentfolder where status <> -1 and  folderid=@folderid

if @name is not null

begin

set @s=@name+isnull('/'+@s,'')

goto lab

endreturn @s

end呼叫如下:

select dbo.getdocumentfolderpath(dbo.documentsfolderitem.folderid) as name from documentsfolderitem

一對多查詢

最終會將訂單資訊對映到 orders 中,訂單所對應的訂單明細對映到 orders 中的 orderdetail 屬性中。每個 orders 中的 orderdetail 屬性儲存了該訂單所對應的訂單明細。select orders.user.username user.user.birthday ...

一對多查詢

案例 查詢所有使用者資訊及使用者關聯的訂單資訊。使用者資訊和訂單資訊為一對多關係。sql語句 select u.id,u.username,u.birthday,u.u.address,o.id oid,o.number,o.createtime,o.note from user u left jo...

mybatis 一對多查詢

查詢訂單及訂單明細的資訊。這裡怎麼體現了一對多 這裡orders的id出現重複的記錄,無法對映到orders類中 collection 對關聯查詢到多條記錄對映到集合物件中 4 查詢訂單 關聯使用者 及訂單明細 public listfindordersandorderdetailresultmap...