初學者進,大牛飄過
假設有一個學生選課的業務模型
請畫出可能涉及到的數據庫表的屬性
User
ID NAME
SEX
1 張三 1
2 lisi
1
3 王五 0
4 趙六 1
Course
ID NAME
1 java
2 php
3 c++
4 c
5 p
6 a
Score(關係表)
ID UID
CID
1 1 1
2 1 2
3 2 3
4 2 2
5 3 3
6 4 2
7 1 3
A:根據學員ID,查詢該學員所選的課程信息
這個簡單,飄過
B:課程按所選學員人數由高到低排名,列出排名1-2的課程信息
一定一定記住:下面是oracle數據庫(rownum關鍵字)
t.*
FROM
(
SELECT
rownum rn,
s.*
FROM
(
SELECT
c. NAME,
count(c. NAME)
FROM
USER u
JOIN Score s ON u.ID = s.UID
JOIN Course c ON s.CID = c.ID
GROUP BY
c. NAME
ORDER BY
count(c. NAME) DESC
) s
WHERE
rownum <= 2
) t
WHERE
rn >= 1
舉例說明limit:
1.取前5條數據
select * from t limit 0,5 或select * from t limt 5
2.取第11條數據到第15條數據
select * from t limit 10,5
以上是例子
SELECT
c. NAME,
count(c. NAME)
FROM
USER u
JOIN Score s ON u.ID = s.UID
JOIN Course c ON s.CID = c.ID
GROUP BY
c. NAME
ORDER BY
count(c. NAME) DESC
LIMIT 0,2
C:列出所有選擇2門課以上的學生信息,由高到低排序
SELECT
u. NAME,
count(c. NAME)
FROM
USER u
JOIN Score s ON u.ID = s.UID
JOIN Course c ON s.CID = c.ID
GROUP BY
u. NAME
HAVING
count(c. NAME) >= 2