我有一个像这样的表结构(简化):
艺术家
ArtistEvent
事件
EventDates
EventGroup
组
我想根据群组ID抽出所有即将举办的活动的艺术家(所以group-> EventGroup-> Event-> ArtistEvent->艺术家。简单,这已经完成并正常工作。
我还想展示艺术家正在玩的下一个事件(即具有MIN(日期)的事件,该事件是此联接的一部分。
由于我们已经在联接中包含了事件,似乎我应该能够获得事件的详细信息(简单,可以在选择中包含这个)但我们需要确保它是第一个日期(由MIN (日期))因为可能有多个(因为我们在ArtistID上分组而忽略其余的)
到目前为止,我有一个查询可以提取所有链接的艺术家,另一个查询在我们的代码中循环运行并为每个艺术家提取下一个事件,但我想知道是否可以在一个查询中执行此操作?
如果我这样做,我可以让它返回事件:
SELECT artist.name, MIN(EventDate.Date), Event.Name
FROM Artist
INNER JOIN ArtistEvent ON Artist.ArtistID = ArtistEvent.ArtistID
INNER JOIN Event ON Event.EventID = ArtistEvent.EventID
INNER JOIN EventGroup ON EventGroup.EventID = Event.EventID
INNER JOIN EventDates ON EventDates.EventID = Event.EventID
WHERE EventGroup.GroupID = 1234
但这似乎太简单了 - 返回的Event.Name肯定会对应于EventDates.Date
显示的同一事件吗?
我觉得自己很困惑,需要一双新眼睛?
由于
答案 0 :(得分:0)
这个怎么样:
SELECT artist.name, MIN(EventDate.Date)
FROM Artist
INNER JOIN ArtistEvent ON Artist.ArtistID = ArtistEvent.ArtistID
INNER JOIN Event ON ArtistEvent.EventID
INNER JOIN EventGroup ON EventGroup.EventID = Event.EventID
INNER JOIN EventDates ON EventDates.EventID = Event.EventID
WHERE EventGroup.GroupID = 1234
and eventdate.date > sysdate
group by artist.name