а откуда взялось требование что у него должен быть только один абонемент единовременно? сколько захочет столько и купит, и каждый будет являться отдельной самостоятельной сущностью
а вам и не нужно проходить по всем только записям клиента и только по активным ( или доп поле, или фильтр по дате работы < текущей) нет необходимости в "рваных" отрезках
Антипаттерн. Делайте столько записей на пользователя, сколько у него есть оплаченных периодов (неважно будут это разные абонементы или продления одного и того же).