Запрос возврата тех же сумм - оракул sql - PullRequest
0 голосов
/ 04 мая 2009

Интересно, кто-нибудь может пролить свет на 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, но я знаю, что в базе данных есть разные уровни продажи билетов и т. Д., Он делает это для каждой изменяемой локатора, любые указатели как как я мог это улучшить?

Спасибо

Ответы [ 2 ]

2 голосов
/ 04 мая 2009

Вы забыли присоединиться к CINEMA, возможно, с PERFORMANCE.

Угадай:

AND CINEMA.CINEMA_ID = PERFORMANCE.CINEMA_ID

Вы можете использовать ANSI-соединения, когда вы к этому привыкнете, на самом деле легче читать:

SELECT  SUM(TICKET_TYPE.PRICE) AS TOTALCINEMASALES, CINEMA.LOCATION, PERFORMANCE.PERFORMANCE_DATE
FROM    
   TICKET 
   inner join TICKET_TYPE
     on TICKET_TYPE.TICKET_TYPE_ID = TICKET.TICKET_TYPE_ID
   inner join RESERVATION
     on TICKET.RESERVATION_ID = RESERVATION.RESERVATION_ID
   inner join PERFORMANCE
     on RESERVATION.PERFORMANCE_ID = PERFORMANCE.PERFORMANCE_ID
   inner join CINEMA  /* the missing link */
     on CINEMA.CINEMA_ID = PERFORMANCE.CINEMA_ID
WHERE
   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;
0 голосов
/ 04 мая 2009
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'
-- Added this
        AND PERFORMANCE.CINEMA_ID = CINEMA.CINEMA_ID
--
        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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...