我有3個MySQL表是這樣的:連接多個表,條件語句
基於該表我想打一個表,條件語句: 如果從表3郭爾> =然後nilai saran =表2中的市長和未成年人,否則saran =表1中值大於0的butuh和bidang的concat。而對於汝=
selct((max(skor)-min(skor))*0.25)+min(skor) from table 3
所以,這樣的結果:
如何做呢?
我有3個MySQL表是這樣的:連接多個表,條件語句
基於該表我想打一個表,條件語句: 如果從表3郭爾> =然後nilai saran =表2中的市長和未成年人,否則saran =表1中值大於0的butuh和bidang的concat。而對於汝=
selct((max(skor)-min(skor))*0.25)+min(skor) from table 3
所以,這樣的結果:
如何做呢?
嘗試以下查詢:
select
NIP,
Bidang,
case when Skor >= ((max(skor)-min(skor))*0.25)+min(skor)
then concat(mayor,',',minor)
else concat(Butuh,',',Bidang)
end as Saran
from
(
select table2.*,
table1.Butuh,
table1.Kurang,
table3.Skor
from table2 join table1
on table2.Bidang = table1.Bidang
left join table3
on table2.NIP = table3.NIP
where table1.Butuh > 0
) tab
我一直在嘗試這種語法,但結果始終爲空。 – user3440030
假設nilai
只是意味着一個全球性的分數門檻,你基本上要...
nilai
值的查詢你的結果將沿着以下的說法:
select t2.Nip
, t3.bidang
, case when t3.skor >= t3disc.nilai then t2.mayor || ', ' || t2.minor else base_1.butuh_agg end
saran
from table_2 t2
join table_3 t3 on (t3.Nip = t2.Nip and t3.bidang = t2.bidang)
join (
select t11.bidang
, t11.butuh
|| CASE WHEN t12.butuh IS NOT NULL THEN ', ' || t12.butuh ELSE '' END
|| CASE WHEN t13.butuh IS NOT NULL THEN ', ' || t13.butuh ELSE '' END
|| CASE WHEN t14.butuh IS NOT NULL THEN ', ' || t14.butuh ELSE '' END
|| CASE WHEN t15.butuh IS NOT NULL THEN ', ' || t15.butuh ELSE '' END
butuh_agg
from (
select t1.bidang
, min(t1.kurang) kmin
from table_1 t1
group by t1.bidang
) t11
left join table_1 t12 on (t12.bidang = t11.bidang AND t12.kurang = t11.kmin + 1)
left join table_1 t13 on (t13.bidang = t11.bidang AND t13.kurang = t11.kmin + 2)
left join table_1 t14 on (t14.bidang = t11.bidang AND t14.kurang = t11.kmin + 3)
left join table_1 t15 on (t15.bidang = t11.bidang AND t15.kurang = t11.kmin + 4)
) base_1 on (base_1.bidang = t2.bidang)
join (
select t31.bidang
, t3agg.nilai
from table_3 t31
cross join (
select (max(t32.skor) - min(t32.skor)) * 0.25) + min(t32.skor) nilai
from table_3 t32
) t3agg
) t3disc on (t3disc.bidang = t2.bidang)
;
此建議假定你有最大的在表1中的任何給定的bidang 4非零值,有其中不存在重複值,並且這些值小於或等於4.否則,您將不得不求助於查詢中的排名函數。
我試着用那個代碼,但是我的代碼 – user3440030
糾正了很多錯誤。這段代碼應該讓你開始 - 我在mysql語法上有點生疏。如果您認爲這絕對沒有幫助,請放下筆記,我會刪除答案。 – collapsar
這是哪一種語言? – Rahul
語言是mysql – user3440030
不,我的意思是'bidang,kurang,butuh'?從來沒有硬這個條款。 – Rahul