作者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)
推 ClareQ:oracle的話,用keep(dense rank...)最快 09/28 17:10
→ dowbatw:如果欄位資料在不同資料表的話還可以用join,偏偏現在不能 09/28 17:15
推 PsMonkey:同一個 table 自己 join 自己會有什麼錯誤訊息? 09/28 17:18
推 hhharley:DB2中有ROW_NUMBER()可以用 09/29 00:55