нормально, так что я пытаюсь выбрать строки из БД, чтобы увидеть, если есть какие-либо столкновения внутри календаря, и я наткнулся на еще один вопросSQL заявления выборе строк
вот мой код
$query3 = $dbh->prepare("SELECT * FROM calendar_" . $companyID . " WHERE (calTime+duration) > :calstart AND (calTime+duration) <= (:calend + (duration-(:calend-calTime))) AND agentID = :agentID ORDER BY calTime ASC");
$query3->bindParam(':calstart', $time);
$calend = $time + $duration;
$query3->bindParam(':calend', $calend);
который выглядит что-то подобное в более читаемом SQL
SELECT * FROM calendar_01 WHERE (calTime + duration) > 1331386200
AND (calTime + duration) <= (1331388000 + (duration - (1331388000 - calTime)))
AND agentID =1
ORDER BY calTime ASC
LIMIT 0 , 30
нижняя граница, очевидно, работает нормально, однако с верхней границей у меня есть проблема, где если продолжительность события составляет 7200 2 часа, и кто-то пытается ввести новое событие, которое, скажем, всего 1800, и начнет 1800 после первого, оно позволит это, хотя событие, которое было введено, длино 7200 и фактически переполнило бы новое событие. Поэтому мне нужно, чтобы верхняя граница была динамической в том смысле, что если: calend < (calTime + duration), тогда выберите строку в противном случае: кадрируйте как верхнюю границу.
я, хотя я был почти сразу же с тем, что я был тем не менее пытаюсь этой части
(1331388000 + (duration - (1331388000 - calTime)))
заканчивается минус минус в некоторых случаях поэтому верхняя граница много больших и включает в себя строку, когда они не должны быть
Извините, но в чем ваш вопрос? – Ben