作者dowbatw (Dowbatw)
看板Database
标题[SQL ] 大难题请教
时间Sun Sep 28 16:50:48 2008
各位高手好
之前有一个问题,提出後被版主砍文
之後思考了一下
还是想不出答案
所以还是要来这边求救
以下是原本的问题
======================================================================
目前我有一个老师课程的资料表,里面的资料如下
id coursename teacher year
--------------------------------------------
1 A 甲 2008
2 B 甲 2008
3 C 甲 2007
4 D 甲 2007
5 E 乙 2007
6 F 乙 2007
7 G 乙 2006
8 H 乙 2006
我的目标是要得出每位老师最新年度所开的所有课程
也就是如下资料
id coursename teacher year
--------------------------------------------
1 A 甲 2008
2 B 甲 2008
5 E 乙 2007
6 F 乙 2007
=====================================================================
结果回传
以下是我的看法:
我想是不是需要先从表格里面取出每一笔「teacher对应year」的资料
然後将这个资料和「全部的资料」作交集运算?
但MYSQL似乎没有这种INTERSECT的运算方法
是不是会用where的方式,或者是用having,或者用一些subquery方式
因为group by将会使得每一个teacher都只会出现一笔相对应的资料
也就是说group by使得每一个teacher注定只会出现一次
可是where又不知道怎麽指定
因为他并不是统一的条件
并不是每一笔资料都对应同一个year
不知道版上哪位高手能提供我思考的方向?
功力太弱了
感激不尽!
--
“The philosophers have only interpreted the world, in various ways. The point,
however, is to change it.”
Karl Marx "Theses on Feuerbach" (1845), Thesis 11
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.119.199.84
※ 编辑: dowbatw 来自: 140.119.199.84 (09/28 16:56)
※ 编辑: dowbatw 来自: 140.119.199.84 (09/28 17:02)
※ 编辑: dowbatw 来自: 140.119.199.84 (09/28 17:07)
※ 编辑: dowbatw 来自: 140.119.199.84 (09/28 17:09)
※ 编辑: dowbatw 来自: 140.119.199.84 (09/28 17:10)
1F:推 ClareQ:oracle的话,用keep(dense rank...)最快 09/28 17:10
2F:→ dowbatw:如果栏位资料在不同资料表的话还可以用join,偏偏现在不能 09/28 17:15
3F:推 PsMonkey:同一个 table 自己 join 自己会有什麽错误讯息? 09/28 17:18
4F:推 hhharley:DB2中有ROW_NUMBER()可以用 09/29 00:55