1

完了したフィクスチャと今後のフィクスチャを表示するFixturesjQuery カルーセル ローラーがあります。ニュース ローラーの上のhttp://www.allblacks.com/を参照してください。現在、これはハードコードされています。

最大 5 つのレコードをスクロール可能にする必要があります。ローラーには、最後に完了したフィクスチャが表示され、前方の矢印は次の 2 つのフィクスチャを表示し、後方の矢印は最近完了した 2 つのフィクスチャを表示します。これは、ローラー js を介して自動的に行われます。つまり、5 つのレコードが返された場合、ローラーは中央のレコード、つまりレコード # 3 を表示します。

では、3 番目のレコードが最後に完了したフィクスチャである 5 つのレコードを抽出するには、どのようにクエリを作成すればよいでしょうか?

以下はデータベース構造です。フィクスチャの完成は によって決定されeventDateTimeます。

テーブルイベント:

eventID   Event                      eventDateTime
-------------------------------------------------
2016      Australia v All Blacks     2012-12-11 22:00:00.000
2015      South Africa v Australia   2012-12-04 03:00:00.000
2014      South Africa v Australia   2012-11-28 03:00:00.000
2013      South Africa v All Blacks  2012-11-22 03:00:00.000
2012      All Blacks v Australia     2012-11-07 19:35:00.000
2011      Australia v All Blacks     2012-10-31 22:00:00.000
2010      Australia v South Africa   2012-10-24 22:00:00.000
....

編集

したがって、eventID現在の日付 (2012 年 11 月 18 日) で 2012 年が最後に完了した試合であるため、返されるレコードは次のようになり、eventID2012 年が真ん中、つまり 3 番目のレコードになります。

eventID   Event                      eventDateTime
-------------------------------------------------
2010      Australia v South Africa   2012-10-24 22:00:00.000  
2011      Australia v All Blacks     2012-10-31 22:00:00.000  
2012      All Blacks v Australia     2012-11-07 19:35:00.000
2013      South Africa v All Blacks  2012-11-22 03:00:00.000
2014      South Africa v Australia   2012-11-28 03:00:00.000
4

2 に答える 2

1

おそらくこれだけが必要です:

select eventID, Event, eventDateTime
from
  (select top 3 *
   from events
   where DATEADD(dd, DATEDIFF(dd,0,eventDateTime), 0) <= getdate()
   order by eventDateTime) first
union all
select eventID, Event, eventDateTime
from
  (select top 2 *
   from events
   where DATEADD(dd, DATEDIFF(dd,0,eventDateTime), 0) > getdate()
   order by eventDateTime) second
于 2012-11-18T10:53:26.950 に答える
0
Select * from
(
select top 3 * from #event where eventDateTime<=(getdate()) order by eventDateTime desc
UNION
select top 2 * from #event where eventDateTime>(getdate())
) a
order by eventDateTime

追加は可能性があります

Select * from
(
select top 3 *,1 - row_number() over (order by GetDate() - eventDateTime)  as Sequence from #event where eventDateTime<=(getdate()) order by eventDateTime desc
UNION
select top 2 *, row_number() over (order by eventDateTime - GetDate() ) from #event where eventDateTime>(getdate())
) a
order by  eventDateTime
于 2012-11-18T10:38:19.170 に答える