我使用MySQL和InnoDB,我有一个表reserver2列:idReservation和idChambre
我有一个表reservation和表chambre
现在我希望我的查询返回每个不在我的 dateDebut 和 dateFin 之间的“chambre.id”。
以下是我的实际查询:
SELECT cre.id
FROM reserver AS rer
INNER JOIN reservation AS ron
ON rer.idReservation = ron.id
RIGHT JOIN chambre AS cre
ON rer.idChambre = cre.id
WHERE (ron.dateFin < ?
OR ron.dateDebut > ?
OR (ron.dateFin = NULL AND ron.dateDebut = NULL))
Run Code Online (Sandbox Code Playgroud)
我的问题是当 chambre 的 id 已经在 Reserver 中时,我的返回值只包含 chambre。
我的第二个问题是“RIGHT JOIN”将每个 chambre 添加到我的查询中,但我想要的只是 chambre 为:“ron.dateFin < ? OR ron.dateDebut > ?” 或尚未与储备者联系的房间。
编辑:这里有一些示例行:
id …Run Code Online (Sandbox Code Playgroud)