次のことを行うクエリについてサポートが必要です。
- 最新のレコードから開始し、古いレコードに向かって下に移動します。
- created_at 時間で注文する必要があります。
- created_at 時間までにデータベースに新しいレコードがある場合は、それらを取得しますが、ステップ 1 で既に取得したレコードは取得しません。
- 一度に 16 レコードだけを取得したい。その数は後で変更できます。
- 以前に送信したレコードを取得しないでください。
また、これは $.ajax を介して開始されます。
この理由は、クライアントに送信される新しいレコードと古いレコードをリアルタイムで取得しているためです。ユーザーが Web サイトにアクセスし始め、新しいレコードから現在のレコードを取得するようなものだと考えてください。その後、ユーザーは古いレコードを取得できますが、同じ要求で新しいレコードも取得します。一度にわずか 16 レコードのひねりを加えます。
私は理にかなっていますか?
これは私が現在コードのために持っているものです:
RssEntry.includes(:RssItem).where("rss_items.rss_id in (?) AND (rss_entries.id < ? OR rss_entries.created_at > ?)", rssids, lid, time).order("rss_entries.id DESC").limit(16)
lid = last lowest id from those records
rssids = ids from where to get the records
time = last time it did the records call
上記のコードはほんの始まりにすぎません。上記の要件を満たしていることを確認するためのサポートが必要です。
更新 1
わかりましたので、2つのSQLクエリでやりたいことができました。1つのSQLクエリでやりたいことができるとは本当に思いません。
どんな助けでも大歓迎です。
ありがとう。