Sobes.tech
Middle

Παραγωγή μιας λίστας ακριβών κρατήσεων Ερώτηση Πώς μπορείτε να παράγετε μια λίστα κρατήσεων την ημέρα [τηλέφωνο] που θα κοστίζουν στον μέλος (ή στον επισκέπτη) περισσότερο από 30 $? Θυμηθείτε ότι οι επισκέπτες έχουν διαφορετικά κόστη από τα μέλη (τα καταγεγραμμένα κόστη είναι ανά μισάωρο 'διάστημα'), και ο χρήστης επισκέπτης είναι πάντα ID 0. Συμπεριλάβετε στη έξοδό σας το όνομα της εγκατάστασης, το όνομα του μέλους διαμορφωμένο ως μία στήλη και το κόστος. Ταξινομήστε κατά φθίνουσα κόστος και μην χρησιμοποιείτε υποερωτήματα.

sobes.tech AI

Απάντηση από 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 — количество половинчасовых интервалов.
  • Стоимость рассчитывается с учётом типа пользователя.

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