0

ユーザーのリストと最後のログイン日を返そうとしています。ユーザーがリストを並べ替えるために選択したパラメーターによって動的に入力されるため、ステートメントごとの外部順序に影響を与えないものを取得する必要があります。もう1つは、ログイン時間を格納するテーブルで、user_idとuser_typeをユーザーテーブルにリンクするために2つのフィールドが必要です。

table_admin
field: id, name

table_logs
field: id, user_id, user_type, login_date

* table_admin.id = table_logs.user_id

table_logs.user_typeは「admin」である必要があります*

すべての管理者ユーザーを最終ログイン日でtable_adminからプルする必要があります(ログテーブルにレコードがない場合も機能する必要があります)。ログテーブルのuser_typeは「admin」になります。

お時間をいただきありがとうございます。

SELECT SQL_CALC_FOUND_ROWS admins.*,ld2.ip,ld2.login_date as last_login 
FROM admins 
LEFT JOIN ( 
    SELECT * FROM log_logins WHERE user_type = "admin" ORDER BY login_date DESC 
) as ld2 ON (ld2.user_id = admins.id) 
WHERE 1 
GROUP BY user_id 
ORDER BY admins.id DESC LIMIT 0,40

これは私がこれまでに持っているものですが、ログテーブルにエントリがない場合は結果を取得しません。

4

1 に答える 1

1

これは、集計との結合です。

select a.name, 'admin' as userType, max(l.login_date) as lastLoginDate
from admin a left outer join
     logs l
     on a.id = l.id and
        l.user_type = 'admin'
group by a.name
于 2013-01-17T19:48:37.390 に答える