Mysql
 sql >> база данни >  >> RDS >> Mysql

Намерете празнини в датата с mysql

Това трябва да даде правилния резултат:

select
  id,
  min(startDate) as startFreeDate,
  count(*) - (endDate is null) numFreeDays
from (
  select
    pb1.id,
    pb1.bookingDate startDate,
    min(pb2.bookingDate) endDate
  from
    pricesBookings pb1 left join pricesBookings pb2
    on pb1.id=pb2.id
       and pb2.price>0
       and pb2.bookingDate>pb1.bookingDate
  where
    pb1.price=0
  group by
    pb1.id,
    pb1.bookingDate
) s
group by id, endDate
order by id, startDate

вижте го тук .

Ако трябва да търсите всички безплатни слотове от, например, 14 дни, можете да добавите HAVING:

group by id, endDate
having count(*) - (endDate is null) >= 14
order by id, startDate


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да ограничим резултатите в MySQL, PostgreSQL и SQLite

  2. Разрешаване на неправилно кодиране на знаци при показване на резултатите от базата данни MySQL след надстройка до PHP 5.3

  3. PHP/MySQL вмъкнете ред, след което получете 'id'

  4. Грешка в Mysql „Получих грешка -1 от машината за съхранение“.

  5. Работа с целостта на базата данни