Удивительно, если кто-нибудь может пролить свет на sql-запрос, с которым я работаю;Запрос, возвращающий те же суммы - oracle sql
Я построил этот запрос;
SELECT SUM(TICKET_TYPE.PRICE) AS TOTALCINEMASALES, CINEMA.LOCATION, PERFORMANCE.PERFORMANCE_DATE
FROM RESERVATION, TICKET, TICKET_TYPE, CINEMA, PERFORMANCE
WHERE TICKET_TYPE.TICKET_TYPE_ID = TICKET.TICKET_TYPE_ID
AND TICKET.RESERVATION_ID = RESERVATION.RESERVATION_ID
AND RESERVATION.PERFORMANCE_ID = PERFORMANCE.PERFORMANCE_ID
AND CINEMA.LOCATION = 'SKIPTON'
AND PERFORMANCE.PERFORMANCE_DATE BETWEEN to_date('01/03/2009','DD/MM/yyyy') AND to_date('07/04/2009','DD/MM/yyyy')
GROUP BY
CINEMA.LOCATION, PERFORMANCE.PERFORMANCE_DATE
ORDER BY
TOTALCINEMASALES;
Каждый раз, когда я запускаю его, он возвращает набор SaM сумм по каждой строке для totalcinemasales, но я знаю, что есть разные уровни продаж билетов и т.д. сидевшие в базе данных, он делает это для каждой локации, меняю , любые указатели относительно того, как я мог бы улучшить его?
Благодаря
Спасибо, что вы не можете (возможно, причина проблемы после прочтения вашего предложения) заключается в том, что нет прямой связи с производительностью до кино, я использовал кинематограф (screen_id)> run (screen_id >> performance (run_id)). Должен ли я включать обе эти таблицы и добавление 'и' для lin кс? или ansi присоединяется, allthoug, я чувствую, что мне нужно, чтобы я услышал, что это больше. – 2009-05-04 13:21:40
Да, вам нужно присоединиться ко всем таблицам. Если вы этого не сделаете, вы получите Cartesian Product, это означает, что все комбинации Cinema и присоединенных других таблиц возвращаются. Чтобы понять, что я имею в виду, удалите предложение group by и SUM из предложения select. С фильтром вы удаляете все бесполезные комбинации. –
благодарит Стефана, даст это – 2009-05-04 14:27:53