面試題:多對多的關係

初學者進,大牛飄過

假設有一個學生選課的業務模型


請畫出可能涉及到的數據庫表的屬性

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關鍵字)

SELECT
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
下面是mysql數據庫(limit關鍵字)

舉例說明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

發佈了20 篇原創文章 · 獲贊 13 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章