再會,
我有下表:

我想弄清楚如何計算每個預訂 ID 的重疊預訂。結果應如下所示:

例如,預訂 ID 1 從第 2 天到第 5 天,因此與預訂 ID 2 和預訂 ID 5 重疊。
我想包括一些我嘗試過的東西,但它們相距甚遠,甚至離正確還差得很遠。
uj5u.com熱心網友回復:
您可以使用自LEFT聯接和聚合:
SELECT r1.id, COUNT(r2.id) count
FROM reservations r1 LEFT JOIN reservations r2
ON r2.id <> r1.id AND r2.beginning_day <= r1.ending_day AND r2.ending_day >= r1.beginning_day
GROUP BY r1.id;
或者,使用相關子查詢更簡單:
SELECT r1.id,
(
SELECT COUNT(*)
FROM reservations r2
WHERE r2.id <> r1.id
AND r2.beginning_day <= r1.ending_day AND r2.ending_day >= r1.beginning_day
) count
FROM reservations r1;
請參閱演示。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/360100.html
