現在、テーブル内の値に対してある種のバージョン管理を実装しています。と の間に複合主キーがbookingId
ありrevision
ます。このテーブルから、ヘッド リビジョンであるすべてのレコードを選択できるようにしたいですか? 私は何をすべきかわかりません。
[ bookingDetailsTable
] :
- [予約ID ]
- 【リビジョン】
- 【お名前】
- 等...
SELECT * from bookingDetailsTable group by bookingId
最初のリビジョンを選択しますが、予約ごとに HEAD リビジョンを選択できるようにしたいと考えています。
WHERE はテーブル全体で最も高いリビジョンのみを選択するため、このようなことはできないことを付け加えておきます。
SELECT * from bookingDetailsTable where revision = (
select max(revision) from bookingDetailsTable
)
GROUP BY bookingId
私の現在のSELECT
これが私の現在の選択で、3 つの結合があります。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`