下面的代码可以正常工作,但现在我想像这样添加多个日期:
reservationStartDate = 2018-07-16, 2018-07-17
SELECT
*,
SUM(IF(reservationId IS NULL,
0,
reservationStartDate = '2018-07-17')) AS ConflictingReservations
FROM
units
LEFT JOIN
reservations ON (unitsId = reservationSpace)
WHERE
unitsType = 'room1'
GROUP BY unitsId
HAVING ConflictingReservations = 0;
最佳答案
我会这样做:
SELECT u.unit_id,
SUM(r.reservationStartDate IN ('2018-07-17')) AS ConflictingReservations
FROM units u LEFT JOIN
reservations r
ON u.unitsId = r.reservationSpace
WHERE u.unitsType = 'room1'
GROUP BY u.unitsId
HAVING ConflictingReservations = 0;
或者,更简单地说:
SELECT u.*
FROM units u LEFT JOIN
reservations r
ON u.unitsId = r.reservationSpace AND
r.reservationStartDate in ( . . . )
WHERE u.unitsType = 'room1' AND r.reservationSpace IS NULL;
根本不需要 GROUP BY
,因为您没有使用计数。
关于MYSQL 过滤多个日期作为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51139253/