私はusers
とpayment
の2つのテーブルを持つデータベースを持っています。
各ユーザーには多くの支払いがあり、それぞれの支払いは成功または失敗できます。関連するテーブルの最後の4レコードを取得するMySQLクエリ
最後の4回の支払いに失敗したすべてのユーザーを取得するためのクエリを作成する必要があります。
これは私がこれまで試したものです:
select *
from users u
where u.id in(
select p.user_id
from payments
where p.status = 'failed'
group by p.user_id
having count(p.id) = 4
);
しかし、あなたはこれが最後の4回の支払いをチェックするが、それらの全てだけでなく見ることができますように。したがって、4回の支払いに失敗したユーザーを返すことになります(過去4回だけでなく、グローバルでも)。
ことが重要であるが、テーブルのフィールドがある場合、私は知らない。
ユーザー:
id | name | email | password
支払:
id | date | status | user_id
| | (can be success or failed) | (FK)
更新:
これをsqlfiddleは私が必要とするものを理解するのに役立ちます。
クエリでは、支払いが4回失敗したすべてのユーザーが返されます。しかし、私は最新の4つの支払いが失敗したユーザーのみが必要です。この場合、IDのユーザーのみが表示されます5
質問は少しあいまいです動作します。最後の4回の支払いが失敗したユーザー、または最後に4回の支払いが失敗したユーザーを希望しますか? –
あなたのお返事ありがとう@Harshil。私はsqlfiddleを追加して、達成したいことを説明しようとしました。 –