Từ 1 tới 2 trên tổng số 2 kết quả

Đề tài: tại sao trong case when lại không cho đặt biến là kiểu chuỗi

  1. #1
    Ngày gia nhập
    03 2010
    Nơi ở
    tphcm
    Bài viết
    227

    Thumbs down tại sao trong case when lại không cho đặt biến là kiểu chuỗi

    declare @a1 as int,@a2 as nvarchar(255),@a3 as nvarchar(255)
    set @a1=1
    set @a2= N'Không Có'
    select *,
    case
    when mayanh = @a2
    then (select sanpham.idsp from sanpham,ctsp where sanpham.idsp=ctsp.idsp)
    when mayanh=@a2 and videocall=@a3 then 1
    end
    from ctsp,sanpham
    where sanpham.idsp=ctsp.idsp
    Anh/chị xem dùm em tại sao nó bị báo lỗi này vậy:
    Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
    Em cám ơn nhiều

  2. #2
    Ngày gia nhập
    08 2009
    Nơi ở
    C:\Documents and Settings\ME\My Documents\Visual Studio 2010
    Bài viết
    516

    Nội dung không phải như bạn nói, vì mặc định thì đoạn sql trong điều kiện thứ nhất:
    (select sanpham.idsp from sanpham,ctsp where sanpham.idsp=ctsp.idsp)
    có thể sẽ lấy ra kết quả tập hợp (nhiều bản ghi) nếu trong bảng sanpham có nhiều bản ghi và thỏa mãn điều kiện, nhưng đoạn sql trong điều kiện thứ hai:
    mayanh=@a2 and videocall=@a3 then 1 chỉ lấy ra kết quả đơn.
    Do vậy, hai kết quả ở hai điều kiện khác nhau. Để khắc phục bạn chỉ cần thêm "TOP 1" vào sau select ở đoạn sql trogn điều kiện thứ nhất:
    (select TOP 1 sanpham.idsp from sanpham,ctsp where sanpham.idsp=ctsp.idsp)

Các đề tài tương tự

  1. Moshi - Thương Hiệu case bảo vệ iPhone, iPad hàng đầu từ Mỹ tại NMS_macsaigon Thương hiệu case bảo vệ hàng đầu cho i
    Gửi bởi nvhuu.nmslaptop trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 4
    Bài viết cuối: 07-03-2013, 12:43 PM
  2. Pattern ( trong regex ) lọc lấy chuỗi giữa 2 chuỗi biết trước ?
    Gửi bởi thitgaluoc trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 23-05-2011, 10:28 PM
  3. Turbo C Lỗi Nhập một chuỗi và 1 từ cho biết từ đó xuất hiện trong chuỗi bao nhiêu lần?
    Gửi bởi vietvinhqn1992 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 17-01-2011, 12:38 PM
  4. Cho biết cách cộng 2 chuổi trong SQL 2000
    Gửi bởi BuithiHa trong diễn đàn Thắc mắc đại cương Database & Reporting
    Trả lời: 1
    Bài viết cuối: 23-06-2007, 01:21 AM
  5. Chuyển 1 chuỗi sang Tittle Case hoặc ProperCase trong lập trình C#
    Gửi bởi neverland87 trong diễn đàn Tutorials và Thủ thuật lập trình C#, ASP.NET
    Trả lời: 2
    Bài viết cuối: 26-03-2007, 06:19 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn