Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Potrzebujesz pomocy z tym zapytaniem MySQL. Znajdowanie użytkowników, którzy są dostępni w określonym czasie

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
    )

edytuj Biorąc przykład z tandu

Myślę, że to również by zadziałało i ma dodatkową zaletę wydajności, ponieważ nie zawiera podzapytań:

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. jak stworzyć to zapytanie

  2. Sprawdź język napisów na podstawie glifów w PHP

  3. Iteruj i uzyskaj unikalne wartości z JSON dla niektórych indeksów

  4. Jak uzyskać typ zapytania w PDO?

  5. MySqlCommand Prepare() nigdy nie ustawia IsPrepared na true