Giúp mình bài này với:
Nhanvien(msnv,ten_nv,ngay_sinh)
Trình _độ(msnv,ngoai_ngu,trình_do)
Liệt kê các nhân viên vừa biết ’ anh văn’ vừa biết ‘hoa văn’
mh cám on!!!!!!!
Giúp mình bài này với:
Nhanvien(msnv,ten_nv,ngay_sinh)
Trình _độ(msnv,ngoai_ngu,trình_do)
Liệt kê các nhân viên vừa biết ’ anh văn’ vừa biết ‘hoa văn’
mh cám on!!!!!!!
CSDL là chỗ để phân tích. Muốn phân tích thì phải có đủ tin tức. Hỏi về dữ liệu thì phải cho người ta biết đủ chi tiết.
Giả sử trường ngoaingu chứa 'Anh' hoặc 'Hoa' hoặc gì gì đó. Và giả sử trường trinhdo không liên quan gì đến "biết" hay "không biết". (Chỉ viết một query ngắn mà phải đặt 2 giả sử!)
Lập một subquery select bảng Trinh_do có ngoaingu = 'Anh'
Lập một subquery select bảng Trinh_do có ngoaingu = 'Hoa'
inner join hai sub này với nhau qua trường MsNV
hình như bạn viêt thiếu đề :d
Select nhanvien.*
from nhanvien,trinhdo
where (nhanvien.manv=trinhdo.manv)and(ngoaingu=anhvan)an d(ngoaingu=hoavan)
select a.* from Nhanvien a where msnv in (
select msnv from
(
select msnv, count(*) tong_nn from Trinh_do
where ngoai_ngu in ('anh van','hoa van')
group by msnv
having count(*) > 1
) b )
@tonysonpham:
Cái lô gíc này sẽ tìm ra zê rô dòng
(ngoaingu=anhvan) and (ngoaingu=hoavan)
Nếu anhvan <> hoavan => không có trị ngoaingu nào có thể thỏa mãn điều kiện trên
@dpr:
Yêu cầu chỉ giản dị thôi, câu truy vấn rắc rối quá.
Select a.* from NhanVien a
inner join Trinh_do b on a.msnv = b.msnv
inner join Trinh_do c on a.msnv = c.msnv
where b.ngoaingu = 'Anh' and c.ngoaingu = 'Hoa'
Như đã nói trước đây, muốn giới hạn 'trình độ' như thế nào thì cứ việc thêm vào vài cái 'and' nữa.
Bookmarks