我有一个将存储事件的数据库。每个事件都有不同的活动。该数据库作出这样(我知道这是不是最好的数据库设计,但我什么是给我的工作):选择列出了所有活动的最近事件SQL
eventID | date | eventname | activity
___________________________________________
0001 | 01/01/2012 | name1 | activty1
0002 | 01/01/2012 | name1 | activty2
0003 | 01/05/2012 | event2 | activty1
0004 | 01/05/2012 | event2 | activty2
0005 | 01/07/2012 | name1 | activty1
同一个事件可以有多个活动。我可以从事件(活动)获取所有记录的唯一方法是通过eventname列。
我想要做的是获得最后20个事件与它的所有活动。因此,我不能简单地选择20行(使用LIMIT
,因为这不会每次得到20个事件,因为有些事件有2个活动,其他10个)。
我不能使用SELECT DISTINCT eventname
,因为某些事件在不同的日期有相同的名称。我需要的是只有在日期不同的情况下才有独特的事件名称。
我迷失了方向。
谢谢。
您是否想要最近的20个事件,但每个事件名只能表示一次? – 2012-02-24 16:18:35
@ConradFrix我正在寻找20个活动,以及他们的所有活动。我期望获得代表20个事件的基本记录数x。 - 希望这是有道理的。 – blo0p3r 2012-02-24 17:01:31
你可以查询最近20个事件,然后在游标中循环它们,查找每个事件的所有活动,然后将这些事件插入到一个表对象中,然后返回这些行?可能不是最快的方法,但它会非常简单。 – Ted 2012-02-24 17:17:26