歡迎關注,敬請點讚!
【摘要】
現有乙個會議室管理系統,有一張會議室表(id,名稱,位置,大小,投影projection),一張預定表(id,會議室id,起始時間,結束時間,預定人),建立方法及**如下:
create table meeting (
id int(11) not null auto_increment,
name varchar(50) default null,
position varchar(256) default null,
size int(11) default '0',
projection int(11) default '1',
primary key (id)
) engine=innodb auto_increment=7 default charset=utf8mb4;
meeting表id
name
position
size
projection
1room1
10112002
room2
10312013
room3
10415014
room4
20112005
room5
20312016
room6
204150
1
create table `booking` (
`id` int(11) not null auto_increment,
`meeting_id` int(11) default null,
`start_time` datetime default current_timestamp,
`end_time` datetime default current_timestamp,
`booking_man` varchar(50) default 'admin',
primary key (`id`)
) engine=innodb auto_increment=17 default charset=utf8mb4;
booking表id
meeting_id
start_time
end_time
booking_man11
2019/11/12 17:50
2019/11/12 19:50
xiao wang25
2019/11/12 20:50
2019/11/12 22:50
xiao wang33
2019/11/12 20:50
2019/11/12 22:50
xiao liu44
2019/11/12 20:50
2019/11/12 22:50
xiao liu52
2019/11/12 20:50
2019/11/12 22:50
xiao sun61
2019/11/12 22:20
2019/11/12 22:50
xiao sun72
2019/11/12 23:00
2019/11/12 23:40
xiao wang81
2019/11/12 20:50
2019/11/12 21:20
xiao wu93
2019/11/12 23:00
2019/11/12 23:40
xiao liu
select b.booking_man, count(*) c from booking b join meeting m on b.meeting_id = m.id group by b.booking_man order by c desc;
根據題意,需要顯示預定會議室的人booking_man和次數count,倒序排列;
簡寫直接跟在全稱後面,中間的as省略,如count() [as] c;
同級的逗號隔開,如b.booking_man, count() c;
join on 配合使用,on 可以理解為「滿足…條件時」,其作用範圍終止於(不包括)後面其它語法如group by、order by、where等;
預定和被預定,意味著兩表連線(join)時,booking表的meeting_id = meeting表的id。
select m.name, count(*) c from meeting m join booking b on m.id = b.meeting_id group by m.name order by c desc limit 3;
根據題意,需要顯示會議室名稱name和次數,倒序排列,顯示前幾個(比如前3個);
limit 3表示顯示前3個。
返回頂部
select b.booking_man, m.name, b.start_time, b.end_time, m.projection from booking b join meeting m on b.meeting_id = m.id and m.projection = 1;
根據題意,需要顯示預定會議室的人booking_man,被預定且有投影(booking表的meeting_id = meeting表的id,且projection = 1),會議室名稱(因乙個人可能定多個會議室),宜顯示起始和結束時間。
select now(), m.name from meeting m join booking b on b.meeting_id = m.id and now() between b.start_time and b.end_time union select now(), m.name from meeting m where m.id not in (select b.meeting_id from booking b);
根據題意,需要顯示該時段now(),會議室名稱name,(情況一)有預定但當前時間不在起始和結束時間範圍內的會議室 聯合 (情況二)沒有預定,room2和room3屬於情況一,room6屬於情況二。
歡迎關注,敬請點讚!
返回頂部
不再不好意思
1 我決定了將知識 邏輯應用於生活。1 我會仔細分析彼此雙方的優勢 劣勢 目的 需求 價值 人品 等等一系列。以及我自己要的,還有我的應對策略。我決定這麼做。2 當然這遠遠不夠。我決定在日常生活中利用這些思想。比如吃飯 休息 購物 我決定應用。我決定形成我自己的方法。2 我決定堅守原則 知己知彼,百...
連個判空都不會,還好意思說工作好多年
由於原來一直都沒注意到這兩個方法,一直使用string.isnullorempty,當看到string.isnullorwhitespace時,而且在微軟人員開發的專案中經常使用時才注意到,查了一下msdn,記一下免得以後忘記。string.isnullorempty 都知道,這個功能是判斷字串是否...
別讓不好意思害了你 。
昨晚和乙個本科同學嘮嗑 祭奠了一下青春 想到本科畢業的時候除了畢業答辯 班裡還組織了最後一次班會 四年的相處大家已經很熟悉了 說是班會到也算不上 就是乙個班級的人聚到一起 每個人上台簡單講了一段話 要麼回憶一下過去的四年 要麼分享一些經驗 其中乙個同學的 ppt 標題現在依舊很深刻 是的 標題就是 ...