Для получения списка бронирований на определённый день, где стоимость превышает $30, без использования подзапросов, можно использовать JOIN и фильтрацию в WHERE. Предположим, у нас есть таблицы bookings, members, facilities, и стоимость рассчитывается исходя из длительности и тарифа, который зависит от того, гость это (ID=0) или член.
Составьте список дорогих бронирований
Для получения списка бронирований на определённый день, где стоимость превышает $30, без использования подзапросов, можно использовать JOIN и фильтрацию в WHERE.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Составьте список дорогих бронирований
Вопрос Как можно составить список бронирований на день [phone], которые обойдутся участнику (или гостю) дороже $30? Помните, что у гостей разные стоимости по сравнению с участниками (указанные стоимости — за полчаса «слота»), и пользователь-гость всегда имеет ID 0. Включите в вывод название объекта, имя участника, оформленное в один столбец, и стоимость. Отсортируйте по убыванию стоимости и не используйте подзапросы.
Ответ
Для получения списка бронирований на определённый день, где стоимость превышает $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— количество половинчасовых интервалов.- Стоимость рассчитывается с учётом типа пользователя.
Такой запрос выводит название объекта, имя пользователя в одной колонке и стоимость, отсортированные по убыванию стоимости.