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

Нуждаете се от помощ с тази MySQL заявка. Намиране на потребители, които са на разположение в определено време

select *
from users u    
where u.Assignable = 1
    and u.UserID not in (
       select UserID
       from Appointments a
         join TimeSlots t on a.TimeSlotID = t.TimeSlotID 
       where t.EndTime > now()
          and t.EndTime > @desiredStartTime
          and t.StartTime < @desiredEndTime
    )

редактиране Вземайки пример от танду

Мисля, че това също би свършило работа и има допълнителното предимство на производителността, че няма подзаявки:

select *
from users u    
    left join Appointments a on a.UserID = u.UserID
    left join TimeSlots t on (
    a.TimeSlotID = t.TimeSlotID 
       and t.EndTime > now()
       and t.EndTime > @desiredStartTime
       and t.StartTime < @desiredEndTime
    )
where 
    u.Assignable = 1
    and t.TimeSlotID is null


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какъв е най-добрият начин за обработка на сесии за PHP сайт на множество хостове?

  2. mysql сравнение дата и час

  3. Грешка при деформиран пакет по време на MySQL LOAD DATA LOCAL INFILE

  4. Azure - разрешение е отказано при опит за свързване с външна база данни MySQL

  5. Изчисляване Текущи суми по редове и групиране по ID