Middle
Produseți o listă de rezervări costisitoare Întrebare Cum puteți produce o listă de rezervări în ziua de [telefon] care vor costa membrul (sau oaspetele) mai mult de 30 $? Amintiți-vă că oaspeții au costuri diferite față de membri (costurile listate sunt pe fiecare jumătate de oră 'slot'), iar utilizatorul oaspete este întotdeauna ID 0. Includeți în ieșirea dvs. numele facilității, numele membrului formatat ca o singură coloană și costul. Ordonați după cost descrescător și nu utilizați subinterogări.
sobes.tech AI
Răspuns de la 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— количество половинчасовых интервалов.- Стоимость рассчитывается с учётом типа пользователя.
Такой запрос выводит название объекта, имя пользователя в одной колонке и стоимость, отсортированные по убыванию стоимости.