需求:根據使用者id,年份、周次查出使用者的所有週報資訊(使用者資訊和一年中的所有周次都要顯示出來)
查出這個結果:
1、需要拿到周報表的狀態和提交日期,
2、需要從檢視拿到月份和周次
3、從使用者表拿到使用者名稱和密碼(該錶存有所有使用者資料)
其中使用者表的userid和周報表的operid一致,周報表的月份和周次和檢視的一致,年份擷取檢視的vdate前四個字段:
第二種,先把資料查出來放到臨時表,再分組排序(建議):
--方法一:
select kv.
year
,kv.userid,kv.username,kv.vmonth,kv.monthweek,a.remark,a.opertime
right
join
(select
min(k.userid) userid,
min(k.username) username,
min(substr(vdate,1,
4))year
, v.monthweek monthweek,
min(v.vmonth) vmonth
from kd_userid k,vweekdate v
where k.userid=
'8888'
and v.vdate like
'2020%'
--and v.monthweek='02'
group
by monthweek
order
by monthweek
)kvon a.operid=kv.userid and a.vmonthweek=kv.monthweek and a.vmonth=kv.vmonth
-- 方法二:
with temp1
as(select kv.vdate,kv.userid,kv.username,kv.vmonth,kv.monthweek,a.remark,a.opertime
right
join
(select k.userid ,k.username username, v.vdate,v.monthweek monthweek, v.vmonth
from kd_userid k,vweekdate v
where k.userid=
'8888'
and v.vdate like
'2020%'
--and v.monthweek='02'
order
by v.monthweek
)kvon a.operid=kv.userid and a.vmonthweek=kv.monthweek and a.vmonth=kv.vmonth)
select
min(substr(vdate,1,
4))year
,min
(userid) userid,
min(username) username,
min(vmonth) vmonth,
min(monthweek) monthweek,
min(remark) remark,
min(opertime) opertime
from
temp1
group
by monthweek
order
by monthweek
多表結合查詢
多表結合查詢的方法。多表查詢需要遵循資料庫的規則,必須是主鍵與外來鍵的關係鏈結,主鍵在先外來鍵在後,如果不按照順序就連線不上,下圖顯示的表示一對多的關係。3.首先宣告引數,我要結合5個表來查詢 3.接下來就是連線各個需要的表,下面是連表的 相對於是乙個格式了,必須要遵循這個規則才可以實現查詢的要求。...
mysql排序 分組 多表查詢
1.mysql排序 1.1.從大到小排序,不加desc預設情況下是公升序 mariadb fei1 select from student order by age desc id name age 7 lisi 50 4 sean 28 5 zhangshan 26 3 wangqing 25 2...
Oracle 多表查詢
sql 外連線 sql 按部門統計員工人數 部門號 部門名稱 人數 sql select d.deptno,d.dname,count e.empno 2 from dept d,emp e 3 where d.deptno e.deptno 4 group by d.deptno,d.dname ...