У меня есть такая структура таблицы (упрощенно):
Artist
ArtistEvent
Событие
EventDates
EventGroup
Group
Я хочу вытащить всех исполнителей, у которых есть предстоящие события, на основе идентификатора группы (поэтому group-> EventGroup-> Event-> ArtistEvent-> Artist. Просто, это сделано иработает.
Я также хотел бы показать следующее событие, на котором играет артист (то есть событие с MIN (дата), которое является частью этого объединения.
Поскольку мыуже включив события в объединение, кажется, я должен быть в состоянии получить подробную информацию о том, что событие(просто, может включать это в выборку), но мы должны убедиться, что это ПЕРВАЯ дата (по MIN (Date)), поскольку их может быть несколько (которые не учитываются, когда мы группируемся по 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
?
Мне кажется, я запуталась и мне нужна свежая пара глаз?
Спасибо