В настоящее время я реализую какой-то контроль версий для значений в таблице. У меня есть составной первичный ключ от bookingId
до revision
. Я хочу иметь возможность выбрать все записи из этой таблицы, которые являются основной ревизией? Я не уверен, что я должен делать.
[bookingDetailsTable
]:
- [ bookingId ]
- [ редакция ]
- [ имя ]
- и т.д ...
SELECT * from bookingDetailsTable group by bookingId
выбирает первую ревизию, однако я хочу иметь возможность выбрать ревизию HEAD для каждого бронирования.
Я должен добавить, что я не могу сделать что-то подобное, потому что ГДЕ будет выбирать только ревизии, которые являются самыми высокими во всей таблице.
SELECT * from bookingDetailsTable where revision = (
select max(revision) from bookingDetailsTable
)
GROUP BY bookingId
Мой текущий выбор
Вот мой текущий выбор, он состоит из трех соединений. Элемент управления REVISION ограничен таблицей сведений. Поэтому я хочу, чтобы соединение использовало только самую высокую ревизию из этой таблицы:
module_bookings_bookings_details
SELECT `b`.*, `b`.`id` AS `bookingId`, `d`.*, `c`.*, `p`.* FROM `module_bookings_bookings` AS `b`
INNER JOIN `module_bookings_bookings_details` AS `d` ON b.id = d.bookingId
INNER JOIN `module_bookings_clients` AS `c` ON b.clientId = c.id
LEFT JOIN `module_bookings_property` AS `p` ON d.propertyId = p.id GROUP BY `b`.`id`