一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 1661|回复: 17
收起左侧

[Stanford]Introduction to databases (week3) 讨论帖!

[复制链接] |试试Instant~ |关注本帖
sanguine 发表于 2014-1-21 22:54:50 | 显示全部楼层 |阅读模式

[其他]Introduction to databases #3 - 2014-01-07@stanford

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x


因为学的同学比较多,这周课程作业也非常多,把讨论帖和加分贴分开方便大家发帖问问题


讨论帖(该贴仅为week3讨论帖,加分贴请点这里)

课程汇总 && 介绍:http://www.1point3acres.com/bbs/thread-79690-1-1.html

本周任务:


                               
登录/注册后可看大图


season1016 发表于 2014-1-24 19:59:58 | 显示全部楼层
其实SQL的疑问有好多。我再来发一条吧。SQLite系统里是不是对all, intersect , union这些语句都不适用呀?每次用到都报错
回复 支持 反对

使用道具 举报

 楼主| sanguine 发表于 2014-1-24 23:24:07 | 显示全部楼层
season1016 发表于 2014-1-24 19:59
其实SQL的疑问有好多。我再来发一条吧。SQLite系统里是不是对all, intersect , union这些语句都不适用呀?每 ...

对的,SQLite不支持all,union这些
回复 支持 反对

使用道具 举报

 楼主| sanguine 发表于 2014-1-24 23:28:40 | 显示全部楼层
大家SQL Movie-Rating Query Exercises Challenge Level 的Q6:
For each director, return the director's name together with the title(s) of the movie(s) they directed that received the highest rating among all of their movies, and the value of that rating. Ignore movies whose director is NULL.

都是什么思路呢==感觉被绕晕了……虽然作出来了但感觉效率很低,
我是先把两张表连接起来作为一张大表作为newDirector, 然后有newDirector1,newDirector2,where语句就这样写的:
where stars in
  (select max(stars)
  from Movie join Rating using(mID)
  where newDirector.director = director)

感觉这个题有非常多的思路,大家说说你们都是什么思路?
回复 支持 反对

使用道具 举报

season1016 发表于 2014-1-25 07:34:39 | 显示全部楼层
sanguine 发表于 2014-1-24 23:28
大家SQL Movie-Rating Query Exercises Challenge Level 的Q6:
For each director, return the director' ...

感觉我的更复杂呢
select director, title, mstar
from (select *
        from Movie, (select mID, max(stars) as mstar from Rating R group by R.mID) NewR
        where Movie.mID=NewR.mID)
group by director
having director is not null

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

 楼主| sanguine 发表于 2014-1-25 10:37:25 | 显示全部楼层
season1016 发表于 2014-1-25 07:34
感觉我的更复杂呢
select director, title, mstar
from (select *

没有,感觉你的会更简单一点,我当时是一直没想到,如何查找到max(stars)后,再查到这个stars对应的movie title~~~而且因为以前学过SQL==一直没习惯在from里面用subquery,只会在where里面用,

我的因为where newDirector.director = director,每查询遍历一次newDirector这张表的一行,就要再查完整张director
不过都是自己YY的时间复杂度==好像从来就没人讨论过SQL的效率阿什么的==?
回复 支持 反对

使用道具 举报

season1016 发表于 2014-1-25 11:00:46 | 显示全部楼层
本帖最后由 season1016 于 2014-1-25 11:04 编辑
sanguine 发表于 2014-1-25 10:37
没有,感觉你的会更简单一点,我当时是一直没想到,如何查找到max(stars)后,再查到这个stars对应的movie ...

呵呵,每个人有每个人的习惯呀,我还不习惯在where里面放subquery呢。。。不过还好老师给的题多,后面慢慢摸索出来的。我第一个core set的题库里面的代码都很复杂。。后面就慢慢会用in not in ,代码就简单好多
老师也有说过复杂度的问题。但是具体和计算机里面的时间复杂度 存储的复杂度(不知道专业术语是啥)是不是一样的我也不知道。但是原则就是能命名的table就通过名字来引用,避免多算一遍。至于多个表join会不会增加时间复杂度不知道呢。不过join的表越多,结果table越大倒是真的。
回复 支持 反对

使用道具 举报

bearkino 发表于 2014-1-28 21:26:44 | 显示全部楼层
那啥  刚开始做题  看到大家说union之类的关键词不能用。。就手贱去测试了下  但是结果通过了啊  0.0

在SQLite里编译也能得到结果。。

我用的是SQLiteStudio  不知道什么情况。。
回复 支持 反对

使用道具 举报

bearkino 发表于 2014-1-28 23:01:30 | 显示全部楼层
SQL Movie Rating Modification E 里面的第二题  大家是用的  insert into TABLE (X,X,X) select y,y,y UNION ALL select y,y,y  ..... 的方法么。。

整个人都不好了。。

求教育。
回复 支持 反对

使用道具 举报

 楼主| sanguine 发表于 2014-1-28 23:06:32 | 显示全部楼层
bearkino 发表于 2014-1-28 23:01
SQL Movie Rating Modification E 里面的第二题  大家是用的  insert into TABLE (X,X,X) select y,y,y UNI ...

Insert 5-star ratings by James Cameron for all movies in the database. Leave the review date as NULL. 这个题?

不需要union吧,我直接用的
insert into Rating  
select rID,mID,5,null from Reviewer, Movie  
where name="James Cameron";
回复 支持 反对

使用道具 举报

 楼主| sanguine 发表于 2014-1-28 23:06:49 | 显示全部楼层
bearkino 发表于 2014-1-28 21:26
那啥  刚开始做题  看到大家说union之类的关键词不能用。。就手贱去测试了下  但是结果通过了啊  0.0

在 ...

呀,你直接在文本框里用union可以允许成功?
回复 支持 反对

使用道具 举报

bearkino 发表于 2014-1-28 23:19:05 | 显示全部楼层
sanguine 发表于 2014-1-28 23:06
呀,你直接在文本框里用union可以允许成功?

是啊  我直接成功了啊  0.0
回复 支持 反对

使用道具 举报

bearkino 发表于 2014-1-28 23:22:05 | 显示全部楼层
sanguine 发表于 2014-1-28 23:06
Insert 5-star ratings by James Cameron for all movies in the database. Leave the review date as NU ...

唔。  我开始哪儿写错了估计  
回复 支持 反对

使用道具 举报

tim900925 发表于 2014-1-30 00:33:20 | 显示全部楼层
请问下为啥我用不了update语句啊。。
做第9题时我先得到一个reviewer和review次数的表格,然后把它用括号括起来作为update...set...语句的操作对象,但是总会报错这是啥情况。。
Query failed to execute: near 'select': syntax error或者Query failed to execute: near '(': syntax error
回复 支持 反对

使用道具 举报

企盼黎明~ 发表于 2014-2-2 11:33:15 | 显示全部楼层
小弱问个问题,movie rating query core set第六题第七题怎么做啊?求个思路
6.For all cases where the same reviewer rated the same movie twice and gave it a higher rating the second time, return the reviewer's name and the title of the movie. 我只会找出rate了两次的movie,第二次高怎么选出来呢?
7.For each movie that has at least one rating, find the highest number of stars that movie received. Return the movie title and number of stars. Sort by movie title.
为啥我写的SQL结果比答案少一项呢??
select title,stars
from Rating,Movie
where Rating.mID in
(select Rating.mID
from Rating
group by Rating.mID
having count(*)>=1) and Movie.mID=Rating.mID
group by Rating.mID
stars=max(stars)
order by title;
回复 支持 反对

使用道具 举报

 楼主| sanguine 发表于 2014-2-3 11:23:05 | 显示全部楼层
企盼黎明~ 发表于 2014-2-2 11:33
小弱问个问题,movie rating query core set第六题第七题怎么做啊?求个思路
6.For all cases where the s ...

第六题我在另外一个贴回你了,第七题你用的方法好复杂阿

这样就可以呀
select title, max(stars)
from Movie, Rating
where Movie.mID=Rating.mID
group by Rating.mID
order by title

然后
(select Rating.mID
from Rating
group by Rating.mID
having count(*)>=1)
这种一般不用什么having count(*)>=1吧?你直接用exist,如果存在不就可以了么,和having count(*)>=1是一个意思

然后倒数第二行stars=max(stars) 没搞懂你这是什么意思,放在group by语句里的?没搞懂,我运行了你的程序,stars=max(stars) 直接报错的
回复 支持 反对

使用道具 举报

jimmyjwd 发表于 2014-2-5 21:24:03 | 显示全部楼层
求问Movie rating Challenge level Q4:
Find the movie(s) with the highest average rating. Return the movie title(s) and average rating.
怎样在where clause里实现找到最大的avgRating?

select title, avgRating
from
(select title, avg(stars) as avgRating
from Movie, Rating
where Movie.mID=Rating.mID
group by Rating.mID) T
where avgRating>=(select max(avgRating) from T) ???
回复 支持 反对

使用道具 举报

supervicky 发表于 2014-4-3 23:18:51 | 显示全部楼层
斑竹,弱问下sql这个,老师上课demo用的软件是什么啊?是sql lite我的界面是个小黑窗口,没有那些操作的图形界面呢。另外,老师是不是没给我们他上课用的例子数据呢?student,apply,college这些。 谢谢你
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-4 14:52

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表