Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Überlappendes Buchungs-SQL

Sie sind vom Kurs abgekommen, weil Sie denken, dass dies mit mehreren Zeilen aus dem Join zu tun hat. Das Problem liegt in Ihrer Logik in der WHERE-Klausel. Sie sagen nicht, was Sie in Bezug auf die Daten wollen, daher ist es unmöglich zu wissen, was die Lösung sein sollte.

Ich habe es vereinfacht, indem ich nur auf die Buchungstabelle geschaut habe. Ich bekomme die zwei Zeilen, wo Sie nur eine erwarten. Alles, was Sie tun müssen, ist herauszufinden, welche Bedingung Sie wirklich wollen.

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)