2011-05-28 39 views
0

我做我的理学士IT大项目,我做的影院售票系统 我有3个表SQL帮助

电影

movieID movieName ticketPrice 
    1001  3 idiots  200 
    1002  ready 300 
    1003  robot 250 

时间表

showId movieId 
9001  1001 
9002  1003 
9003  1002 

门票

ticketNo showId soldBy 
21  9001  A 
73  9001  B 
23  9001  A 
22  9001  A 
64  9002  A 
34  9003  B 
11  9001  A 
98  9001  A 
38  9003  B 
78  9001  B 
24  9002  A 
31  9001  A 

我希望得到以下结果

userName showId TotalAmount(Product of Count(TicketNo) and ticketPrice) 
A   9001 1200 
A   9002 500 
B   9001 400 
B   9003 600 

请帮我

回答

2
SELECT 
    t.soldBy AS userName, 
    t.showId, 
    SUM(m.ticktPrice) AS TotalAmount 
FROM 
    tickets t 
    INNER JOIN schedule s ON s.showId = t.showId 
    INNER JOIN movies m ON m.movieId = s.movieId 
GROUP BY 
    t.soldBy, 
    t.showId 
+2

'SUM(t.ticketNo * m.ticktPrice)'应该只是'SUM(m.ticktPrice)','t.ticketNo'只是一个票证标识符。 – 2011-05-28 08:14:41

+0

谢谢,改变了它。 +1 – NGLN 2011-05-28 08:17:12

0
SELECT 
    T.`soldBy`, 
    T.`showId`, 
    SUM(M.`ticketPrice`) 
FROM 
    tickets AS T 
    INNER JOIN schedule AS S 
    ON T.`showId` = S.`showId` 
    INNER JOIN movies AS M 
    ON S.`movieID` = M.`movieID` 
GROUP BY T.`soldBy`, 
    T.`showId` ; 

只是一个想法:在许多地方,这是习惯有不同的价格,不仅是因为电影院电影,但由于电影播放的时间(即早上更便宜,周末晚上更贵)。如果你想考虑这一点,那么你就不应该把价格与电影联系起来,而应该将电影与电影联系起来。

+0

它does not工作.....................任何方式谢谢先前的建议我有同样的想法,但后来我改变主意,包括价格电影表 – sanu 2011-05-28 08:37:32

+0

为什么它不起作用?在这里完美工作! ;) – Bjoern 2011-05-28 08:39:06

+0

对不起,感谢它完美的作品,我键入广告SUM(S.'ticketPrice')这就是为什么它不工作,现在它工作完美 – sanu 2011-05-28 08:58:05

1
select t.soldBy userName, t.showId showId, count(t.ticketNo) * m.tickeprice total 
from tickets t 
inner join schedule s on t.showId = s.showId 
inner join movies m on m.movieId = s.movieId 
group by t.soldBy, t.showId