由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Database版 - SQL问题请教
相关主题
How to query a treeSQL Server query 一问
一个sql问题:怎样实现 (((a1*10)+a2)*10+a3)*10 ... (转载)想练习SQL, 求建议
问个查询的问题求教个MS SQL的问题
这个sql语句怎么写Oracle 11g坑爹还是公司DBA坑爹
ADO & DAO &SQL...Help...SQL 请教
问个SQL的问题一个SQL写法性能的请教
SQL question服了,这就是我们QA和DBA的水平
Problem with this T-SQL statement请教:如何优化,提取组间最大行
相关话题的讨论汇总
话题: sale话题: select话题: released话题: title话题: where
进入Database版参与讨论
1 (共1页)
b***s
发帖数: 117
1
有两个表,一个movies,有id, title, year_released
另一个sale表,有movie_id, sale,theatre
现在要得到各movie(title)卖票的总额,然后按year_released排序
而movie可能在多个theatre里放映,在sale表里有多条记录
也可能没有放映,在sale里没有记录,那么就是0
怎么用一个SQL写呢?
我试了
SELECT title, sum(sale) FROM movies, sale
WHERE movies.id=sale.movie_id
GROUP BY title
UNION
SELECT title, 0
FROM movies
WHERE movies.id NOT IN (SELECT movie_id FROM sale)
ORDER BY movies.year_released;
但是通不过,报告说ODER BY year_released这里不对
M*****r
发帖数: 1536
2
This inline view works in Oracle:
select sale_v.title, sale_v.t_sale, movies.year_released
from movies,
(select movies.title title, SUM(sale.sale) t_sale
from movies, sale
where movies.id = sale.movie_id
group by movies.title) sale_v
where sale_v.title = movies.title
order by movies.year_released;

【在 b***s 的大作中提到】
: 有两个表,一个movies,有id, title, year_released
: 另一个sale表,有movie_id, sale,theatre
: 现在要得到各movie(title)卖票的总额,然后按year_released排序
: 而movie可能在多个theatre里放映,在sale表里有多条记录
: 也可能没有放映,在sale里没有记录,那么就是0
: 怎么用一个SQL写呢?
: 我试了
: SELECT title, sum(sale) FROM movies, sale
: WHERE movies.id=sale.movie_id
: GROUP BY title

b***s
发帖数: 117
3
问题在于如果一部电影并没有在哪家电影院上映,那么它在sale表里
就找不到,而它最终显示出来的票房应该是0。
这个只能找出在电影院上映的片子的票房 :(

【在 M*****r 的大作中提到】
: This inline view works in Oracle:
: select sale_v.title, sale_v.t_sale, movies.year_released
: from movies,
: (select movies.title title, SUM(sale.sale) t_sale
: from movies, sale
: where movies.id = sale.movie_id
: group by movies.title) sale_v
: where sale_v.title = movies.title
: order by movies.year_released;

w*******e
发帖数: 1622
4
order by里的year_released没在select里出现
当然出错了

【在 b***s 的大作中提到】
: 有两个表,一个movies,有id, title, year_released
: 另一个sale表,有movie_id, sale,theatre
: 现在要得到各movie(title)卖票的总额,然后按year_released排序
: 而movie可能在多个theatre里放映,在sale表里有多条记录
: 也可能没有放映,在sale里没有记录,那么就是0
: 怎么用一个SQL写呢?
: 我试了
: SELECT title, sum(sale) FROM movies, sale
: WHERE movies.id=sale.movie_id
: GROUP BY title

x***e
发帖数: 2449
5
看见union就已经晕了

【在 w*******e 的大作中提到】
: order by里的year_released没在select里出现
: 当然出错了

c*******e
发帖数: 8624
6
try an outer join, you may want to add zeroifnull

【在 b***s 的大作中提到】
: 有两个表,一个movies,有id, title, year_released
: 另一个sale表,有movie_id, sale,theatre
: 现在要得到各movie(title)卖票的总额,然后按year_released排序
: 而movie可能在多个theatre里放映,在sale表里有多条记录
: 也可能没有放映,在sale里没有记录,那么就是0
: 怎么用一个SQL写呢?
: 我试了
: SELECT title, sum(sale) FROM movies, sale
: WHERE movies.id=sale.movie_id
: GROUP BY title

b***s
发帖数: 117
7
问题在于如果一部电影并没有在哪家电影院上映,那么它在sale表里
就找不到,而它最终显示出来的票房应该是0。
这个只能找出在电影院上映的片子的票房 :(

【在 M*****r 的大作中提到】
: This inline view works in Oracle:
: select sale_v.title, sale_v.t_sale, movies.year_released
: from movies,
: (select movies.title title, SUM(sale.sale) t_sale
: from movies, sale
: where movies.id = sale.movie_id
: group by movies.title) sale_v
: where sale_v.title = movies.title
: order by movies.year_released;

D******f
发帖数: 109
8
By the way, I agree with OP that Union is more intuitive to me.
My solution is working in MS-Access... Han ......
D******f
发帖数: 109
9
Try the following statements.
You have to include "year_released" in "select" in order to "order by" it.
You need to include "year_released" in "group by" to make it running
SELECT title, sum(sale), year_released FROM movies, sale
WHERE movies.id=sale.movie_id
GROUP BY title, year_released
UNION
SELECT title, 0, year_released
FROM movies
WHERE movies.id NOT IN (SELECT movie_id FROM sale)
ORDER BY movies.year_released

【在 b***s 的大作中提到】
: 有两个表,一个movies,有id, title, year_released
: 另一个sale表,有movie_id, sale,theatre
: 现在要得到各movie(title)卖票的总额,然后按year_released排序
: 而movie可能在多个theatre里放映,在sale表里有多条记录
: 也可能没有放映,在sale里没有记录,那么就是0
: 怎么用一个SQL写呢?
: 我试了
: SELECT title, sum(sale) FROM movies, sale
: WHERE movies.id=sale.movie_id
: GROUP BY title

1 (共1页)
进入Database版参与讨论
相关主题
请教:如何优化,提取组间最大行ADO & DAO &SQL...Help...
问个sql的问题吧,搞不出来了. (转载)问个SQL的问题
请教一个SQL的问题SQL question
问个问题Problem with this T-SQL statement
How to query a treeSQL Server query 一问
一个sql问题:怎样实现 (((a1*10)+a2)*10+a3)*10 ... (转载)想练习SQL, 求建议
问个查询的问题求教个MS SQL的问题
这个sql语句怎么写Oracle 11g坑爹还是公司DBA坑爹
相关话题的讨论汇总
话题: sale话题: select话题: released话题: title话题: where