30/09/2018, 18:27
Cách truy vấn SQL Server để tìm kiếm nhiều thông tin
…
Em có cái giao diện tìm kiếm của em như hình…khi người dùng chọn các tiêu chí tìm kiếm thì sẽ tìm kiếm theo các tiêu chí mà người dùng đã chọn và hiển thị thông tin lên bảng…Mấy anh chị cho em hỏi là mình phải viết câu truy vấn như thế nào để bao quát được tất cả các lựa chọn của người dùng ạ…Em dùng SQL Server ạ (Ví dụ,người dùng có thể chọn tìm kiếm giới tính là Nam,mã ngoại ngữ là AnhVan…hoặc mã nghề nghiệp là BacSy và Mã ngoại ngữ là AnhVan…v…v.) Anh chị nào biết chỉ em với…em cảm ơn nhiều ạ
Bài liên quan
em viết câu sql bằng cách cộng chuỗi.
Em kiểm tra điều kiện tìm kiếm có nhập thì em cộng vào.
Mình cộng tất cả các chuổi mà người dùng nhập lại…rồi mình truy vấn như thế nào anh???
Giả sử bạn cần tìm kiếm thông tin nhân viên theo các tiêu chí : Họ tên, tuổi, số điện thoại ( chỉ giả sử 3 cái thôi )
Khi đó câu SQL của bạn sẽ có dạng này
Như vậy thì khi người dùng ko nhập gì nó sẽ search ra hết, còn nếu nhập vào thì nó sẽ fill dữ liệu
không nên viết câu sql kiểu này. Thêm điều kiện or vào làm mất thời gian so sánh trong lúc chạy truy vấn.
Em coi link này
http://www.tutorialspoint.com/sqlite/sqlite_java.htm
Phần select.
Em làm như Anh nói…Mà nó không ra gì luôn…Em nghĩ câu truy vấn có vấn đề vì một thuộc tính khi mình không chọn để tìm kiếm thì giá trị của nó trên CSDL không phải là NULL
Câu truy vấn của em
sqlQuery = “Select MaDangVien,HoTenDangVien,NgaySinh,GioiTinh,MaDanToc,MaHocVi,MaNgheNghiep,ChuyenMonNghiepVu,MaNgoaiNgu from DangVien where (MaDangVien = '”+maDangVien1+"’ or MaDangVien = ‘’) and (HoTenDangVien = ‘"+hoVaTen1+"’ or HoTenDangVien = ‘’) and (NgaySinh = ‘"+ngaySinh1+"’ or NgaySinh = ‘’) and (GioiTinh = ‘"+gioiTinh1+"’ or GioiTinh = ‘’) and (MaDanToc = ‘"+maDanToc1+"’ or MaDanToc = ‘’) and (MaHocVi = ‘"+maHocVi1+"’ or MaHocVi = ‘’) and (MaNgheNghiep = ‘"+maNgheNghiep1+"’ or MaNgheNghiep = ‘’) and (ChuyenMonNghiepVu = ‘"+chuyenMonNghiepVu1+"’ or ChuyenMonNghiepVu = ‘’) and (MaNgoaiNgu = ‘"+maNgoaiNgu1+"’ or MaNgoaiNgu = ‘’)";
Bạn nên check input người dùng có nhập giá trị của 1 thuộc tính vào hay không trước khi đưa thuộc tính đó vào câu truy vấn.
Ví dụ mình thường xài : (Mã giả)
@MangoaiNgu = ‘’ chứ ko phải là Mangoaingu = ‘’
Nếu condition thứ nhất đúng thì nó sẽ bỏ qua condition thứ 2.
Nếu check bằng java thì thực ra cũng mất thời gian so sánh.
Ở link bạn đưa mình không thấy thông tin gì
Mình xin lỗi. Mình đưa thông tin sai.
Để tìm kiếm hiệu quả em nên viết vào store procedure. Vừa bảo mật, vừa thao tác nhanh. (em có thể đọc thêm cách làm store procedure trên mạng nhé).
Lưu ý :
Vài lời em tham khảo thêm nhé.
Rất bổ ích…Em cảm ơn các anh rất nhiều ạ…
Rất Hay!! Cám ơn mọi người đã chia sẻ.
mình từng viết thế naỳ tuy ngắn ngọn nhưng chạy rất chậm…
Tìm hiểu Linq to SQL nhé.