Суть такая - есть таблицы recipient - клиенты, human - доп сведения о клиентах(дата рождения в том числе), таблицы имеют одинаковые id, по ним их можно связать
reservation - это заявки от туристов, тут указано кто оформил (humanid). то какие туристы к заявке относятся записано в таблице people.
Нужно - для менеджера(reservation.humanid) humanid которого мы знаем заранее, найти людей(recipient) которых он отправлял в путешествие и у которых сегодня день рождения. Мне в голову пришёл такой запрос
SELECT *
FROM [samo7.0.2].[dbo].[recipient] t1
RIGHT JOIN [samo7.0.2].[dbo].[human] t2 ON t2.id = t1.id
RIGHT JOIN [samo7.0.2].[dbo].[people] t4 ON t1.id = t4.humanid
RIGHT JOIN [samo7.0.2].[dbo].[reservation] t3 ON t3.id = t4.reservationid
WHERE MONTH(t2.born) = 4 AND (DAY(t2.born) = 9) AND t3.humanid = ?
Но, допустим туриста менеджер отправлял 5ть раз, тогда мы в этой выборке увидим 5ть строк соответственно. А нужно получить только последнюю. В идеале тут же получить количество заявок у менеджера с этим человеком.
Совсем хорошо будет если дополнительно здесь же выбирать заявки reservation где турист был покупателем(так как он из 5ти поездок допустим сам ездил только 3 раза, а 2 других был только плательщиком). Плательщик - reservation.recipientid где recipientid - это recipient.id
Еще не могу допереть как текущий день и текущий месяц прям в запросе чтобы сам подставлялся, хотя это не проблема.
Надеюсь понятно объяснил =) Буду благодарен за помощь!