2

アカウントが上にactivated=1あるときに下にあるアカウントのリストがあるユーザーのリストを表示しようとしています。アクティブなアカウントが設定されている間、すべての非アクティブなアカウントが必要なので、activated=0使用してみましたが、何らかの理由ですべてのコマンドが無視されています。ここで何が間違っていますか?UNIONORDER BY created DESCORDER BY emailORDER BY

(
    SELECT 
        email, 
        roles.full role, 
        created 
    FROM sol_users users
    JOIN sol_user_roles ur ON users.id = ur.user_id 
    JOIN sol_roles roles USING(role_id) 
    WHERE activated = 0
    ORDER BY created DESC
)
UNION
(
    SELECT
        email, 
        roles.full role, 
        created
    FROM sol_users users
    JOIN sol_user_roles ur ON users.id = ur.user_id 
    JOIN sol_roles roles USING(role_id) 
    WHERE activated = 1
    ORDER BY email
)

非アクティブなユーザーを一番上に配置して、管理者がこれらのユーザーをアクティブ化する必要があることを認識できるようにする必要があります。

4

2 に答える 2

2

ユニオンは必要ありません-試してください:

SELECT email, roles.full role, created 
FROM sol_users users
JOIN sol_user_roles ur ON users.id = ur.user_id 
JOIN sol_roles roles USING(role_id) 
ORDER BY activated, case activated when 1 then email end, created DESC
于 2013-04-27T10:33:10.543 に答える
0

句でIFステートメントを使用してみることができます。同様のトピックに関する議論については、これORDER BYを参照してください。

于 2013-04-27T10:37:25.017 に答える