SELECT A.CLASS_ID,CLASS_NAME,CLASS_TEACHER,DAY,ROOM FROM courses_new JOIN
(SELECT CLASS_ID FROM schedule WHERE S_ID = '496511126') A
WHERE A.CLASS_ID = courses_new.CLASS_ID;
==>使用"學號" 查詢該學生的課表(選修的課) 可在SELECT調整需要的欄位
SELECT CLASS_NAME FROM (SELECT A.CLASS_ID,CLASS_NAME,CLASS_TEACHER,DAY,ROOM,START_TIME,END_TIME FROM courses_new JOIN
(SELECT CLASS_ID FROM schedule WHERE S_ID = '496511126') A
WHERE A.CLASS_ID = courses_new.CLASS_ID ) B
WHERE DAY = DATE_FORMAT( NOW(), '%a' )) AND ( CURTIME() BETWEEN START_TIME AND END_TIME);
==>使用"現在時間(格式:xx:yy:zz)" 來查詢 此時此課該學生要上的課
SELECT CLASS_NAME FROM courses_new JOIN (SELECT CLASS_ID FROM open WHERE T_ID = 1) A
WHERE A.CLASS_ID = courses_new.CLASS_ID;
==>使用 老師的T_ID 來查詢 老師所有開的課程名單
SELECT A.S_ID, DEPARTMENT, STUDENT_NAME FROM student JOIN (SELECT * FROM schedule s WHERE CLASS_ID = 2) A
WHERE A.S_ID = student.S_ID;
==>使用 CLASS_ID 來查詢 修課同學名單
SELECT * FROM sign_new s WHERE S_ID = 496511126 AND ROOM = 'SF648' AND DATE_FORMAT(ENTER_TIME,'%Y-%m-%d-') = DATE_FORMAT(NOW(),'%Y-%m-%d-') AND CLASS_ID = 27;
==>判斷此學生 在今天(日期)與CLASS_ID與學號 去判斷是否已簽到過??
SELECT ENTER_TIME FROM sign_new s WHERE DATE_FORMAT(ENTER_TIME,'%Y-%m-%d') = CURDATE() AND CLASS_ID = 27;
==>
SELECT DISTINCT DATE_FORMAT(ENTER_TIME,'%Y-%m-%d') FROM sign_new WHERE CLASS_ID = 27 ORDER BY ENTER_TIME
==>回傳該堂課的(今天以前的)上課日期
SELECT DEPARTMENT, S_ID, STUDENT_NAME, DATE_FORMAT(ENTER_TIME,'%T'),IS_SIGN FROM sign_new WHERE CLASS_ID = 27 AND DATE_FORMAT(ENTER_TIME,'%Y-%m-%d') = '2010-11-27' AND IS_SIGN = '已簽到' ORDER BY ENTER_TIME
==>回傳 該堂課該日期 的所有已簽到學生
SELECT * FROM (SELECT A.S_ID, DEPARTMENT, STUDENT_NAME FROM student JOIN (SELECT * FROM schedule s WHERE CLASS_ID = 2) A
WHERE A.S_ID = student.S_ID) B
WHERE B.STUDENT_NAME
NOT IN
(SELECT STUDENT_NAME FROM sign_new WHERE CLASS_ID = 2 AND DATE_FORMAT(ENTER_TIME,'%Y-%m-%d') = '2010-11-27' AND IS_SIGN = '已簽到' ORDER BY ENTER_TIME);
==>該堂課該日期 未到名單 修課名單-已到名單
UPDATE sign_new SET IS_SIGN = '未到' WHERE CLASS_ID = 27 AND S_ID = 496511126 AND DATE_FORMAT(ENTER_TIME,'%Y-%m-%d') = '2010-11-27'
2010年11月26日 星期五
取得 此時此刻的時間 & 星期幾,此時
SELECT DATE_FORMAT( NOW(), '%a' ) , DATE_FORMAT( NOW(), '%H' ) ;
回傳: 星期幾&此時
SELECT NOW();
SELECT CURRENT_TIMESTAMP;
回傳: ex. 2010-11-26 16:44:21
回傳: 星期幾&此時
SELECT NOW();
SELECT CURRENT_TIMESTAMP;
回傳: ex. 2010-11-26 16:44:21
2010年11月19日 星期五
MySQL DATETIME 時間
MySQL Date 函數
下面的表格列出了MySQL 中最重要的內建日期函數:
SQL Date 數據類型
MySQL 使用下列數據類型在數據庫中存儲日期或日期/時間值:- DATE - 格式YYYY-MM-DD
- DATETIME - 格式: YYYY-MM-DD HH:MM:SS
- TIMESTAMP - 格式: YYYY-MM-DD HH:MM:SS
- YEAR - 格式YYYY 或YY
SQL Server 使用下列數據類型在數據庫中存儲日期或日期/時間值:- DATE - 格式YYYY-MM-DD
- DATETIME - 格式: YYYY-MM-DD HH:MM:SS
- SMALLDATETIME - 格式: YYYY-MM-DD HH:MM:SS
- TIMESTAMP - 格式: 唯一的數字
例子 1
下面是SELECT 語句:
SELECT NOW(),CURDATE(),CURTIME()
結果類似:
NOW() CURDATE() CURTIME()
2008-12-29 16:25:46 2008-12-29 16:25:46
如果需要INSERT時,系統自動加入時間,要將DATETIME欄位的default value設為NOW();
但是如果這樣執行時會跳出錯誤訊息,因為MySQL的文件上面有說,default value只能設為常數不能設為function。
"The DEFAULT value clause in a data type specification indicates a default value for a column. With one exception, the default value must be a constant; it cannot be a function or an expression. This means, for example, that you cannot set the default for a date column to be the value of a function such as NOW() or CURRENT_DATE."
後來爬了爬文,有網友提供另一種和DATETIME幾乎類似的方法
->使用TIMESTAMP型態的column,將其default value設定CURRENT_TIMESTAMP。
每次在TABLE裡面新增一筆資料時,系統會自動在該欄位加入目前時間。
這樣在MySQL環境下是可以成功執行的。
2010年7月26日 星期一
2010年6月2日 星期三
點名資料庫SQL
SELECT * FROM courses JOIN
(SELECT CLASS_ID FROM schedule WHERE S_ID = (SELECT S_ID FROM student_hold WHERE TAG_ID='99999')) A
WHERE A.CLASS_ID = courses.CLASS_ID;
由TAG_ID(逼逼卡)-->用"身分"查出此人修的課堂有哪些(此人的課表) 且列出詳細課程資訊等 上課時間 結束時間
SELECT B.CLASS_ID,B.CLASS_NAME FROM
(SELECT courses.* FROM courses JOIN
(SELECT CLASS_ID FROM schedule WHERE S_ID = (SELECT S_ID FROM student_hold WHERE TAG_ID='99999')) A
WHERE A.CLASS_ID = courses.CLASS_ID) B
WHERE B.START_TIME = '0910';
TAG_ID(RFID學生證)BB-->電腦比對"時間"與"身分"取得此人現在要上什麼課 列出 課程代碼&課程名稱
SELECT DEPARTMENT,S_ID,STUDENT_NAME,IS_SIGN,ENTER_TIME FROM sign JOIN
(SELECT CLASS_NAME FROM courses JOIN (SELECT CLASS_ID FROM open WHERE T_ID =
(SELECT T_ID FROM teacher_hold t WHERE TAG_ID = '88888')) A
WHERE courses.CLASS_ID = A.CLASS_ID AND courses.START_TIME = '0910') B
WHERE sign.CLASS_NAME = B.CLASS_NAME;
老師BB卡,得到現在時間(他開的課),並且得到現在修他課的已經到的學生
SELECT * FROM
(SELECT DEPARTMENT,STUDENT_NAME,s.S_ID FROM student JOIN
(SELECT S_ID FROM schedule JOIN
(SELECT courses.CLASS_ID FROM courses JOIN (SELECT CLASS_ID FROM open WHERE T_ID =
(SELECT T_ID FROM teacher_hold t WHERE TAG_ID = '88888')) A
WHERE courses.CLASS_ID = A.CLASS_ID AND courses.START_TIME = '0910') B
WHERE B.CLASS_ID = schedule.CLASS_ID) s
WHERE student.S_ID = s.S_ID) q
WHERE S_ID NOT IN
(SELECT S_ID FROM sign JOIN
(SELECT CLASS_NAME FROM courses JOIN (SELECT CLASS_ID FROM open WHERE T_ID =
(SELECT T_ID FROM teacher_hold t WHERE TAG_ID = '88888')) A
WHERE courses.CLASS_ID = A.CLASS_ID AND courses.START_TIME = '0910') B
WHERE sign.CLASS_NAME = B.CLASS_NAME);
未到名單
SELECT s.S_ID,STUDENT_NAME FROM student JOIN
(SELECT S_ID FROM schedule JOIN
(SELECT courses.CLASS_ID FROM courses JOIN (SELECT CLASS_ID FROM open WHERE T_ID =
(SELECT T_ID FROM teacher_hold t WHERE TAG_ID = '88888')) A
WHERE courses.CLASS_ID = A.CLASS_ID AND courses.START_TIME = '0910') B
WHERE B.CLASS_ID = schedule.CLASS_ID) s
WHERE student.S_ID = s.S_ID;
修課名單
(SELECT CLASS_ID FROM schedule WHERE S_ID = (SELECT S_ID FROM student_hold WHERE TAG_ID='99999')) A
WHERE A.CLASS_ID = courses.CLASS_ID;
由TAG_ID(逼逼卡)-->用"身分"查出此人修的課堂有哪些(此人的課表) 且列出詳細課程資訊等 上課時間 結束時間
SELECT B.CLASS_ID,B.CLASS_NAME FROM
(SELECT courses.* FROM courses JOIN
(SELECT CLASS_ID FROM schedule WHERE S_ID = (SELECT S_ID FROM student_hold WHERE TAG_ID='99999')) A
WHERE A.CLASS_ID = courses.CLASS_ID) B
WHERE B.START_TIME = '0910';
TAG_ID(RFID學生證)BB-->電腦比對"時間"與"身分"取得此人現在要上什麼課 列出 課程代碼&課程名稱
SELECT DEPARTMENT,S_ID,STUDENT_NAME,IS_SIGN,ENTER_TIME FROM sign JOIN
(SELECT CLASS_NAME FROM courses JOIN (SELECT CLASS_ID FROM open WHERE T_ID =
(SELECT T_ID FROM teacher_hold t WHERE TAG_ID = '88888')) A
WHERE courses.CLASS_ID = A.CLASS_ID AND courses.START_TIME = '0910') B
WHERE sign.CLASS_NAME = B.CLASS_NAME;
老師BB卡,得到現在時間(他開的課),並且得到現在修他課的已經到的學生
SELECT * FROM
(SELECT DEPARTMENT,STUDENT_NAME,s.S_ID FROM student JOIN
(SELECT S_ID FROM schedule JOIN
(SELECT courses.CLASS_ID FROM courses JOIN (SELECT CLASS_ID FROM open WHERE T_ID =
(SELECT T_ID FROM teacher_hold t WHERE TAG_ID = '88888')) A
WHERE courses.CLASS_ID = A.CLASS_ID AND courses.START_TIME = '0910') B
WHERE B.CLASS_ID = schedule.CLASS_ID) s
WHERE student.S_ID = s.S_ID) q
WHERE S_ID NOT IN
(SELECT S_ID FROM sign JOIN
(SELECT CLASS_NAME FROM courses JOIN (SELECT CLASS_ID FROM open WHERE T_ID =
(SELECT T_ID FROM teacher_hold t WHERE TAG_ID = '88888')) A
WHERE courses.CLASS_ID = A.CLASS_ID AND courses.START_TIME = '0910') B
WHERE sign.CLASS_NAME = B.CLASS_NAME);
未到名單
SELECT s.S_ID,STUDENT_NAME FROM student JOIN
(SELECT S_ID FROM schedule JOIN
(SELECT courses.CLASS_ID FROM courses JOIN (SELECT CLASS_ID FROM open WHERE T_ID =
(SELECT T_ID FROM teacher_hold t WHERE TAG_ID = '88888')) A
WHERE courses.CLASS_ID = A.CLASS_ID AND courses.START_TIME = '0910') B
WHERE B.CLASS_ID = schedule.CLASS_ID) s
WHERE student.S_ID = s.S_ID;
修課名單
2010年6月1日 星期二
2010年5月31日 星期一
Java Core API
Java VM 本身內建的類別 被放在java的package之下。
目前在java的package下定義有12個package,如下
使用這些套件時,我們並不需要設定classpath。
目前在java的package下定義有12個package,如下
Package | 說明 |
---|---|
java.applet | 有關Applet相關的類別。 |
java.awt | 圖形使用介面與繪圖相關的類別。 |
java.beans | 使用java beans相關的類別。 |
java.io | 輸出與輸入資料流相關的類別。 |
java.lang | Java語言基礎相關的類別。 |
java.math | 數學運算相關的類別。 |
java.net | 網路相關的類別。 |
java.rmi | 遠端呼叫相關的類別。 |
java.security | 與安全性相關的類別。 |
java.sql | 與資料庫溝通相關的類別。 |
java.text | 文字國際化處理相關的類別。 |
java.util | 特殊資料結構相關的類別。 |
使用這些套件時,我們並不需要設定classpath。
但是在程式中卻需要import這些類別才能使用。
2010年5月30日 星期日
資料庫廠商給的Driver(驅動程式)裡面.jar要放哪裡
例如 Mysql廠商提供的driver裡面
有個 mysql-connector-java-5.0.8-bin.jar 檔案
把此檔案"複製"到路徑:
Java\jdk1.5.0_09\jre\lib\ext資料夾下
完成
有個 mysql-connector-java-5.0.8-bin.jar 檔案
把此檔案"複製"到路徑:
Java\jdk1.5.0_09\jre\lib\ext資料夾下
完成
訂閱:
文章 (Atom)