奇葩的数据库设计,逼得我不得不写这样的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;

虽然奇葩,但里面有几个知识点,以后可能会用到,所以先记录下来,以备后用

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