0
useri_ban.start_ban = max_start
という別の条件で、ユーザーのIDに基づいて2番目のテーブルuseri_ban
を残しています。主な結果には、このサブクエリの結果を参加結合内のサブクエリから親列にアクセスする方法
(SELECT MAX(ub.start_ban) AS max_start, user_id FROM useri_ban ub WHERE ub.user_id = useri.id)
さらに、すべての行にmax_start
を追加するために、私はインナーに必要:私はmax_start
を計算するためには
、私は次のサブクエリを実行する必要があります。しかし、その結合を適用すると、サブクエリはもはやuseri.id
にアクセスできなくなっているようです。
私は間違っていますか?
SELECT
useri.id as id,
useri.email as email,
useri_ban.warning_type_id as warning_type_id,
useri_ban.type as type,
useri.created_at AS created_at
FROM `useri`
inner join
(SELECT MAX(ub.start_ban) AS max_start, user_id FROM useri_ban ub WHERE ub.user_id = useri.id) `temp`
on `useri`.`id` = `temp`.`user_id`
left join `useri_ban` on `useri_ban`.`user_id` = `useri`.`id` and `useri_ban`.`start_ban` = `max_start`
手順1:必要なサブクエリのデータが保持されていることを確認します。 ステップ2:サブテーブルにエイリアスを付けます。 手順3:外部選択の参照エイリアステーブル – Fallenreaper