1

我是数据库菜鸟,所以请多多包涵。我试图在 SqlDataSource 的 SelectCommand 属性中将三个表连接在一起。这是我目前的选择命令:

SelectCommand="SELECT DISTINCT a1.[CreateDate], a2.[UserName], c1.[name], c1.[organisation], c1.[address], a1.[IsApproved], a1.[UserId] FROM [aspnet_Membership], [aspnet_Users] a2, [clients] c1 INNER JOIN [aspnet_Membership] a1 ON c1.userid = a1.UserId INNER JOIN [clients] c2 ON c2.userid = a2.UserId AND a1.IsApproved = 'False'"

这有点糟糕,因为我一直在玩它。我正在尝试显示来自 aspnet_Membership (CreateDate) 的注册日期、来自 aspnet_Users (UserName) 的用户名以及来自我的自定义客户端表的其他详细信息。但是我的连接不起作用。我设法让 aspnet_Membership 与客户一起正常加入以显示 CreateDate,但我无法加入 aspnet_Users 以显示用户名。我不断收到错误消息说“aspnet_Users.UserId 无法绑定”。

有任何想法吗?我很确定问题出在加入中,但无论我对命令进行多少调整,我都无法获得任何结果。

任何帮助将非常感激 :)

4

2 回答 2

2

为什么你使用客户端两次?(也许解释你想要达到的目标)

试试这个:

SELECT DISTINCT 
    am.[CreateDate], ru.[UserName], cl.[name], cl.[organisation], 
    cl.[address], am.[IsApproved], am.[UserId] 
FROM 
    [aspnet_Membership] am
    INNER JOIN clients cl
        ON am.userid = cl.userid
    INNER JOIN [RolesAndAllUsers] ru
        ON cl.userid = ri.userid
WHERE
    cl.IsApproved = 'False'
于 2010-11-22T13:07:16.200 回答
0

这是您发布的内容。我怀疑交叉连接是您的问题所在。

SELECT DISTINCT a1.[CreateDate], a2.[UserName], c1.[name], c1.[organisation], 
    c1.[address], a1.[IsApproved], a1.[UserId] 
FROM [aspnet_Membership]
CROSS JOIN [RolesAndAllUsers] a2
CROSS JOIN [clients] c1 
INNER JOIN [aspnet_Membership] a1 ON c1.userid = a1.UserId 
INNER JOIN [clients] c2 ON c2.userid = a2.UserId 
WHERE a1.IsApproved = 'False'
于 2010-11-22T12:53:32.733 回答