1

私はデータベース初心者なので、ご容赦ください。SqlDataSource の SelectCommand 属性で 3 つのテーブルを結合しようとしています。現時点での私の選択コマンドは次のとおりです。

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

クライアントを 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 に答える