線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:735
推到 Plurk!
推到 Facebook!

請問 adoquery 上的 sql 語法

尚未結案
JammyHsu
一般會員


發表:14
回覆:39
積分:10
註冊:2003-09-08

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-09 11:59:18 IP:140.128.xxx.xxx 未訂閱
SELECT LENDDATE, COUNT(*) AS 人數 FROM STUDENTLIST GROUP BY LENDDATE ORDER BY LENDDATE 以上沒問題, 但是我之後的程式需要用到STUDENTID 我改成 SELECT STUDENTID, LENDDATE, COUNT(*) AS 人數 FROM STUDENTLIST GROUP BY LENDDATE ORDER BY LENDDATE 這樣子會有錯誤說-- 資料行 "STUDENTLIST.STUDENTID" 在選取清單中無效, 因為它未包含在彙總函數或GROUP BY子句中 但是我又不想把它列入GROUP BY中啊 該怎麼改呢? 謝謝! ********************************** 做簽名檔就跟寫程式一樣,想不出來!
pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-09 12:20:20 IP:210.61.xxx.xxx 未訂閱
使用group by時有一點要特別注意,就是在select的欄位列表中,除了聚合函式外,所有出現的欄位一定要在group by中有定義才行 so for example, as your ask SELECT STUDENTID, LENDDATE, COUNT(*) AS 人數 FROM STUDENTLIST GROUP BY STUDENTID,LENDDATE ORDER BY LENDDATE
James
高階會員


發表:10
回覆:290
積分:220
註冊:2002-07-25

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-09 12:34:02 IP:61.218.xxx.xxx 未訂閱
select 
  STUDENTID, LENDDATE,人數
from 
  STUDENTLIST
join 
  ( select LENDDATE,count(*) 人數 from STUDENTLIST group by LENDDATE)  a 
  on a.LENDDATE = STUDENTLIST.LENDDATE
JammyHsu
一般會員


發表:14
回覆:39
積分:10
註冊:2003-09-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-09 15:17:21 IP:140.128.xxx.xxx 未訂閱
引言:
select 
  STUDENTID, LENDDATE,人數
from 
  STUDENTLIST
join 
  ( select LENDDATE,count(*) 人數 from STUDENTLIST group by LENDDATE)  a 
  on a.LENDDATE = STUDENTLIST.LENDDATE
謝謝兩位的解釋及解答 我試了James 的方法, 結果出現 "模陵兩可的LENDDATE" 修改了一下
select 
  STUDENTID, 借用日期,人數
from 
  STUDENTLIST
join 
  ( select LENDDATE as 借用日期,count(*) 人數 from STUDENTLIST group by LENDDATE)  a 
  on a.借用日期 = STUDENTLIST.LENDDATE
這樣子就可以用了 但是另一個問題產生了 那就是得到的資料變成 借用日期 學號 人數 0920219 G915201 1 0930209 134567 4 0930209 G916406 4 0930209 G916317 4 0930209 G916111 4 0930216 G865117 8 0930216 G865118 8 0930216 G916407 8 0930216 G916405 8 0930216 G916403 8 0930216 G916402 8 0930216 G916401 8 0930216 G865120 8 0930217 893332 2 0930217 893329 2 0930406 F881303 3 0930406 D841102 3 0930406 F881304 3 人數對, 但是學號應該只要出現一筆就可以了 這樣我的 GROUP BY 就沒用處了 ********************************** 做簽名檔就跟寫程式一樣,想不出來! 發表人 - JammyHsu 於 2004/04/09 15:20:24 發表人 - JammyHsu 於 2004/04/09 15:21:07
JammyHsu
一般會員


發表:14
回覆:39
積分:10
註冊:2003-09-08

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-09 16:31:07 IP:140.128.xxx.xxx 未訂閱
找到一個不是很好的方法了    
select 
  STUDENTID, 借用日期,人數
from 
  STUDENTLIST
join 
  ( select MAX(STUDENTID) AS 學號, LENDDATE as 借用日期,count(*) 人數 from STUDENTLIST group by LENDDATE)  a 
  on a.借用日期 a.學號 = STUDENTLIST.LENDDATE STUDENTLIST.STUDENTID
********************************** 做簽名檔就跟寫程式一樣,想不出來!
James
高階會員


發表:10
回覆:290
積分:220
註冊:2002-07-25

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-04-13 12:02:09 IP:61.218.xxx.xxx 未訂閱
 
select 
  LENDDATE,max(STUDENTID) 學號,count(*) 人數 
from 
  STUDENTLIST 
group by 
  LENDDATE 
JammyHsu
一般會員


發表:14
回覆:39
積分:10
註冊:2003-09-08

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-04-13 18:01:13 IP:140.128.xxx.xxx 未訂閱
引言:
 
select 
  LENDDATE,max(STUDENTID) 學號,count(*) 人數 
from 
  STUDENTLIST 
group by 
  LENDDATE 
謝謝您 竟然沒想到可以這樣子精簡 ********************************** 做簽名檔就跟寫程式一樣,想不出來!
系統時間:2024-06-27 16:16:38
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!