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

Jak získat volné termíny s rezervacemi?

Pokud váš rezervační formulář vyzve k zadání $start a $end datum/časy pro rezervaci, tento dotaz sdělí, které notebooky jsou dostupné během období určeného těmito dvěma daty:

SELECT items.id, items.name
FROM items
LEFT JOIN types ON items.type = types.id
LEFT JOIN reservations ON reservations.item_id = items.id
WHERE (((reservations.endDate NOT between $start AND $end) and
      (reservations.startDate NOT between $start AND $end)) or
      (reservations.id IS NULL)) and
      (types.id = $laptop_type_id)

První dva between klauzule najde všechny notebooky, jejichž data zahájení/ukončení nespadají do požadovaných dat zahájení/ukončení – např. jsou rezervované, ale jsou dostupné v určeném časovém rozmezí. Nulová kontrola najde všechny notebooky, které nejsou vůbec rezervované. A kontrola types.id omezuje vyhledávání pouze na notebooky.




  1. Jak předat řetězec jako klauzuli WHERE v MYSQL

  2. Jak sloučit dvě databáze se stejnými daty, ale s různými PK, bez duplicitních polí?

  3. více funkcí je jedna velká funkce v PHP?

  4. Odhad mohutnosti:Kombinace statistik hustoty