【问题标题】:asp.net SelectCommand SQL JOIN problemasp.net SelectCommand SQL JOIN问题
【发布时间】:2010-11-22 12:45:43
【问题描述】:

我是数据库新手,所以请多多包涵。我试图在 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”。

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

任何帮助将不胜感激:)

【问题讨论】:

    标签: sql-server join selectcommand


    【解决方案1】:

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

    试试这个:

    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'
    

    【讨论】:

    • 经过一些调整后工作正常,谢谢! RolesAndAllUsers 应该是 aspnet_Users (我从其他例子中得到了前者)但是在改变它之后它工作得很好:)
    【解决方案2】:

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

    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'
    

    【讨论】:

      猜你喜欢
      • 2011-03-25
      • 2011-07-03
      • 1970-01-01
      • 2013-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多