Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

SQL de reserva sobreposto


Você está fora do caminho pensando que isso tem a ver com várias linhas da junção. O problema está na sua lógica na cláusula WHERE. Você não diz o que está querendo em termos de datas, então é impossível saber qual deve ser a solução.

Eu simplifiquei para apenas olhar para a tabela de reservas. Eu recebo as duas linhas onde você está esperando apenas uma. Tudo o que você precisa fazer é descobrir a condicional que você realmente deseja.
mysql> SELECT * FROM booking WHERE NOT(start <= '2018-07-23' AND end >= '2018-07-21');
+-----+------------+------------+-----------+
| uid | start      | end        | apartment |
+-----+------------+------------+-----------+
|   1 | 2018-07-18 | 2018-07-20 |         1 |
|   3 | 2018-07-18 | 2018-07-20 |         2 |
+-----+------------+------------+-----------+
2 rows in set (0.00 sec)