-
30-05-2011, 11:00 AM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Thắc mắc tìm kiếm theo nhiều tiêu chí trong SQL
Mình có 3 dropdownlist và 1 button tìm kiếm. Bây giờ nếu mình chọn drop1 và để 2 drop kia trống thì khi click button nó sẽ tìm kiếm theo giá trị drop1. Nếu chỉ chọn giá trị trên drop2 thì sẽ tìm theo drop2. Nếu chọn 2 giá trị trên drop1 và drop2 thì sẽ ra kết quả theo tiêu chí drop1 và drop2. drop 3 cũng tương tự như thế.
Mình thử bắt chước theo ví dụ này mà chạy ko được. Nó cứ báo lỗi là yêu cầu phải nhập tham số.
Mã:CREATE PROCEDURE dbo.TimKiemPhim_1 @Tenphim NVARCHAR(50), @NamsxMin INT, @NamsxMax INT, @Nuocsx NVARCHAR(50), @Theloai NVARCHAR(50) AS SELECT P.* FROM dbo.Phim P WHERE (@Tenphim IS NULL OR P.Tenphim like '%'+@Tenphim+'%') AND (@NamsxMin IS NULL OR P.Namsx >= @NamsxMin) AND (@NamsxMax IS NULL OR P.Namsx <= @NamsxMax) AND (@Nuocsx IS NULL OR P.Nuocsx = @Nuocsx) AND (@Theloai IS NULL OR P.Theloai = @Theloai)
View more random threads:
- Giúp đỡ lấy code trên host về toàn .dll thì chỉnh sửa thế nào?
- Cách hiển thị ảnh sản phẩm giống trang thegioididong
- Gọi chạy ứng dụng Office qua Browser trong lập trình Asp.net?
- Làm thế nào để thay đổi ClientID control trong aspx.net
- Database Quận/Huyện Tỉnh Thành Phố Việt Nam
- Đổi màu code trong asp.net
- Không thể đăng nhập khi dùng connect OLEDB được sao?
- Send mail trong asp.net
- Cách sử dụng @Html.ValidationSummary() trong MVC để hiện error
- Lỗi WebDev.WebServer.exe khi đăng nhập trên localhost trên trang đăng nhập
-
30-05-2011, 12:40 PM #2Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Bạn đổi thành như thế này thử xem
CREATE PROCEDURE dbo.TimKiemPhim_1
@Tenphim NVARCHAR(50),
@NamsxMin INT,
@NamsxMax INT,
@Nuocsx NVARCHAR(50),
@Theloai NVARCHAR(50)
AS
SELECT P.*
FROM dbo.Phim P
WHERE (@Tenphim IS NULL OR P.Tenphim like '%'+@Tenphim+'%')
OR (@NamsxMin IS NULL OR P.Namsx >= @NamsxMin)
OR (@NamsxMax IS NULL OR P.Namsx <= @NamsxMax)
OR (@Nuocsx IS NULL OR P.Nuocsx = @Nuocsx)
OR (@Theloai IS NULL OR P.Theloai = @Theloai)
-
30-05-2011, 01:21 PM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
WHERE ... AND ... là giá trị phải có.
=> Giá trị khi nhận store proc phải đầy đủ, không thể thiếu.
-
31-05-2011, 01:51 PM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Tôi thấy câu store này sai chỗ Where rồi.
Sửa lại như thế này xem:
Mã:CREATE PROCEDURE dbo.TimKiemPhim_1 @Tenphim NVARCHAR(50), @NamsxMin INT, @NamsxMax INT, @Nuocsx NVARCHAR(50), @Theloai NVARCHAR(50) AS SELECT P.* FROM dbo.Phim P WHERE (P.Tenphim = isnull(@Tenphim, '') OR P.Tenphim like '%'+@Tenphim+'%') AND (P.Namsx = isnull(@NamsxMin,'') OR P.Namsx >= @NamsxMin) AND (P.Namsx = isnull(@NamsxMax,'') OR P.Namsx <= @NamsxMax) AND (P.Nuocsx = isnull(@Nuocsx,'') OR P.Nuocsx = @Nuocsx) AND ( P.Theloai = isnull(@Theloai,'') OR P.Theloai = @Theloai)
Trường hợp cả 5 cái = null hết thì ko có kết quả nào trả về, row = 0
Nhìn vào store này cho thấy bạn đã ko kiểm tra null từ bên ngoài trước khi truyền vào
Thông qua phân tích dữ liệu Google từ 86 quốc gia, mới đây, một công ty tại Anh đã công bố bảng xếp hạng kích tấc "cậu nhỏ" của các nước trên thế giới. Kết quả, hầu hết các nước xếp ở nhóm đầu của...
"Chim" của chàng trai Việt thuộc...