【问题标题】:Nopcommerce export user rolesNopcommerce 导出用户角色
【发布时间】:2021-08-30 15:24:51
【问题描述】:

我正在尝试通过 nopcommerce 数据库获取每个用户的所有用户角色列表。我只需要 Customer.Id、Customer.Username、Customer.Email 和 Customer.Role(有些有多个角色)

这一切都被抬高了。

SELECT Customer.Id, Customer.Username, Customer.Email, CustomerRole.Name
FROM ((Customer
INNER JOIN CustomerRole ON CustomerRole.Id = Customer.Id)
INNER JOIN Customer_CustomerRole_Mapping ON Customer_CustomerRole_Mapping.CustomerRole_Id = CustomerRole.Id)

非常感谢任何帮助!

【问题讨论】:

  • 我想我可能已经想通了......这似乎奏效了。同一个 ID 有多行,但我认为没关系。将“CustomerRole.Name”聚合成一行会很好,但我会让它工作的。 SELECT DISTINCT Customer.Id, Customer.Username, Customer.Email, CustomerRole.Id, CustomerRole.Name, Customer_CustomerRole_Mapping.CustomerRole_Id FROM ((Customer INNER JOIN Customer_CustomerRole_Mapping ON Customer_CustomerRole_Mapping.Customer_Id= Customer.Id) INNER JOIN CustomerRole ON CustomerRole.Id = Customer_CustomerRole_Mapping .CustomerRole_Id)

标签: nopcommerce


【解决方案1】:

我认为您需要 LEFT OTUER JOIN 因为在您的数据库中可以是没有角色的用户;在这种情况下,您可以使用:

SELECT DISTINCT CUST.Id, CUST.Username, CUST.Email, CR.Id, CR.Name, 
CCRM.CustomerRole_Id ,
FROM CUSTOMER CUST
LEFT OUTER JOIN Customer_CustomerRole_Mapping CCRM
ON CUST.ID = CCRM.Customer_Id
LEFT OUTER JOIN CustomerRole CR
ON CCRM.CustomerRole_Id = CR.Id

此外,每个用户只能有一行,一列包含他的角色,如下所示:

SELECT DISTINCT CUST.Id, CUST.Username, CUST.Email,
Roles = STUFF((
        SELECT ',' + CAST(CR1.Name as varchar(4000))
        FROM CustomerRole CR1
        LEFT OUTER JOIN Customer_CustomerRole_Mapping CCRM1
            ON CCRM1.CustomerRole_Id = CR1.Id
        LEFT OUTER JOIN CUSTOMER CUST1
            ON CUST1.ID = CCRM1.Customer_Id
        WHERE CUST1.Id = CUST.Id
        FOR XML PATH('')
     ), 1, 1, '')
FROM CUSTOMER CUST
LEFT OUTER JOIN Customer_CustomerRole_Mapping CCRM
ON CUST.ID = CCRM.Customer_Id
LEFT OUTER JOIN CustomerRole CR
ON CCRM.CustomerRole_Id = CR.Id

根据您的使用情况,如果您有很多客户,最后一次查询可能会有点慢。

【讨论】:

  • 谢谢你!!!!
  • 如果我解决了您的问题,请接受并关闭主题。谢谢。
  • 如何关闭它?
猜你喜欢
  • 2013-01-14
  • 1970-01-01
  • 2020-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多