sql >> Databáze >  >> RDS >> Mysql

Potřebuji pomoc s tímto dotazem MySQL. Hledání uživatelů, kteří jsou k dispozici v určitou dobu

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
    )

upravit Vzít si vodítko od tandu

Myslím, že by to také fungovalo a má to další výkonnostní výhodu bez poddotazů:

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. Pokus o aktualizaci záznamu pomocí PDO

  2. Chyby, úskalí a doporučené postupy T-SQL – pivotování a unpivoting

  3. Jak vytvořit tabulku Postgres s jedinečným kombinovaným primárním klíčem?

  4. volání členské funkce execute() na neobjektu