奇葩的數據庫設計,逼得我不得不寫這樣的sql語句

一個項目的數據庫設計很奇葩,用戶信息表裏有公司編號和角色編號,如果身兼多職,roleID就追加,用逗號分隔。。。。上傳文件一律進file表,頭像上傳也不例外,然後,file表有個關聯字段,保存所有者的編號。。。。

現在要取公司員工信息,用orm框架寫太麻煩,就改用sql語句取,代碼如下:

SELECT  p.xGUID      AS id 
       ,p.Name       AS name 
       ,p.Account    AS account 
       ,p.Email      AS email 
       ,p.Sex        As gender 
       ,p.Mobile     As phone 
       ,p.IsExpert   As isExpert 
       ,p.ExpertArea As expertArea 
       ,STUFF(( 
         SELECT  ',' + r.Name 
           FROM  UE_Organization r 
          WHERE  p.RoleID like '%' + CAST(r.xGUID AS VARCHAR(50)) + '%' 
            FOR  XML PATH('')),1,1,'') AS roleName 
       ,(SELECT  TOP 1 f.Path 
           FROM  UE_File f 
          WHERE  f.LYBMID = p.xGUID 
            AND  f.ScenesType = N'頭像' 
       ORDER BY  CreateTime DESC) AS photo 
  FROM  UE_Person       p 
  JOIN  UE_Organization c 
    ON  p.CompanyID     = c.xGUID 
 WHERE  c.xGUID         = @cid;

雖然奇葩,但裏面有幾個知識點,以後可能會用到,所以先記錄下來,以備後用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章