Sobes.tech
Middle

Wygeneruj listę kosztownych rezerwacji Pytanie Jak możesz wygenerować listę rezerwacji na dzień [telefon], które będą kosztować członka (lub gościa) więcej niż 30 $? Pamiętaj, że goście mają różne koszty od członków (wymienione koszty są za półgodzinny 'slot'), a użytkownik gościa zawsze ma ID 0. Dołącz do swojego wyniku nazwę obiektu, imię członka sformatowane jako pojedynczą kolumnę oraz koszt. Posortuj według malejącego kosztu i nie używaj podzapytań.

sobes.tech AI

Odpowiedź od AI

Для получения списка бронирований на определённый день, где стоимость превышает $30, без использования подзапросов, можно использовать JOIN и фильтрацию в WHERE. Предположим, у нас есть таблицы bookings, members, facilities, и стоимость рассчитывается исходя из длительности и тарифа, который зависит от того, гость это (ID=0) или член.

Пример SQL-запроса:

SELECT f.name AS facility_name,
       CONCAT(m.first_name, ' ', m.last_name) AS member_name,
       (b.slots * CASE WHEN m.id = 0 THEN f.guest_cost_per_slot ELSE f.member_cost_per_slot END) AS cost
FROM bookings b
JOIN members m ON b.member_id = m.id
JOIN facilities f ON b.facility_id = f.id
WHERE b.booking_date = :phone
  AND (b.slots * CASE WHEN m.id = 0 THEN f.guest_cost_per_slot ELSE f.member_cost_per_slot END) > 30
ORDER BY cost DESC;

Здесь:

  • :phone — параметр с датой бронирования.
  • slots — количество половинчасовых интервалов.
  • Стоимость рассчитывается с учётом типа пользователя.

Такой запрос выводит название объекта, имя пользователя в одной колонке и стоимость, отсортированные по убыванию стоимости.