Read-only archive. Login and posting are unavailable.
View Full Version : Bài toán SQL
better.chicken
24-10-2019, 13:29
Dear all,
mình đang nghiên cứu bên SQL server. Có vấn đề như thế này. Mình có bảng A và bảng B như hình. Muốn lấy kết quả ở bảng C nhưng đoạn code bên dưới không ra được kết quả mong muốn. Không biết như code bên dưới của mình cần sửa chổ nào để ra được kết quả ở bảng C anh em nhỉ.
Mình cám ơn nhiều
https://2.pik.vn/201981e7c937-cbb0-4f41-b0b0-d2e577fbf1a9.png
https://2.pik.vn/2019c6793948-228a-4158-93ae-1f4bd7353e92.png
quyendn84
24-10-2019, 13:34
Sao cai bang C bi du ra 2 row vay?
better.chicken
24-10-2019, 13:36
Sao cai bang C bi du ra 2 row vay?
Bảng C là tổng hợp của bảng A và B á bạn
Bạn nói kết quả không mong muốn là sao?
Thử:
SELECT A.namhoc, B.cap, A.lop, B.tongsohocsinh FROM bangA A LEFT JOIN bangB B ON A.namhoc = B.namhoc WHERE A.namhoc = '2019'
tanpro90
24-10-2019, 13:41
rồi sao biết lớp nào của cấp 2 , lớp nào của cấp 1 khi trong bảng a và b k có cột nào quy định
Select * from
(Select [Năm học], (CASE WHEN [Lớp] < 6 THEN 1 ELSE 2 END) as [Cấp], [Lớp], [Tổng số học sinh] from Bảng A
Union
Select [Năm học], [Cấp], [Lớp]='', [Tổng số học sinh] from Bảng B) as Bang C
tanpro90
24-10-2019, 13:44
SELECT A.namhoc, case when a.lop in (1,2,3,4) then 1 else 2 as 'CAP',a.lop, B.tongsohocsinh FROM bangA A LEFT JOIN bangB B ON A.namhoc = B.namhoc WHERE A.namhoc = '2019'
DaiSuThichAnMan
24-10-2019, 13:46
Không có case when làm sao nó ra cấp đc :bye:
Sent from Samsung SM-N960U using vozFApp (http://bit.ly/vozfapp)
quyendn84
24-10-2019, 13:50
thấy có vẻ hơn kỳ kỳ đấy, bạn tham khao xem, có thể mình hiểu sai ý :
sqlfiddle.com/#!18/0d601/1
SELECT
nam_hoc,
case when (lop < 6) then 1 else 2 END as cap,
lop,
tong_so
FROM
TableA
Where nam_hoc=2019
union all
SELECT
nam_hoc,
cap,
'' as lop,
tong_so
FROM
TableB
Where nam_hoc=2019
noodmiss
24-10-2019, 13:53
select
namhoc,
case when cap between 1 and 5 then 1
when cap between 6 and 9 then 2
end as cap,
lop,
tongsohocsinh
from
bangA
union all
select
namhoc,
cap,
null as lop,
tongsohocsinh
from
bangB
Mà đặt tên tiếng việt nhìn ghét thật chứ, sau này lỗi tùm lum cho xem :gach:
kissofdragon1211
24-10-2019, 13:54
Sai từ cách ra đầu bài. Bảng A phải có 1 cột chứa thông tin cấp. Hoặc có 1 bảng map giữa cấp và lớp.
Nghiên cứu mà gặp cái bài tù như này thì sao có kết quả được @@.
Ps Tui đang làm sql developer. Ai thích làm cái này ko?
Sai từ cách ra đầu bài. Bảng A phải có 1 cột chứa thông tin cấp. Hoặc có 1 bảng map giữa cấp và lớp.
Nghiên cứu mà gặp cái bài tù như này thì sao có kết quả được @@.
Ps Tui đang làm sql developer. Ai thích làm cái này ko?
Ý thím là cái này :chaymau:
https://2.pik.vn/2019136ba8c5-afba-421f-86f9-7ee08c518878.png
kissofdragon1211
24-10-2019, 14:09
Ý thím là cái này :chaymau:
https://2.pik.vn/2019136ba8c5-afba-421f-86f9-7ee08c518878.png
Đúng rồi tôi dùng công cụ SQL Developer và role của tôi cũng là như thế luôn. Nhiều khi thấy công việc nó EZ 1 cách khá là nhàm :sosad:
xuantruongT109
24-10-2019, 14:10
Table thì không có khóa chính, yêu cầu thì cũng méo rõ. Chả hiểu thớt đang muốn làm gì. Nếu chỉ cần lấy như table C thím nói thì cần gì bảng B, bảng A có lớp, năm và tổng học sinh rồi case when là ra cấp thôi.
vBulletin® v3.8.0, Copyright ©2000-2026, Jelsoft Enterprises Ltd.