دسته بندی ها
02:21 1399/07/21

فیلتر نتیجه Stored Procedure با استفاده از پارامتر

مشخصات سوال کننده :
کاربر : yasasemani     امتیاز کاربر : 6     رتبه کاربر : 80
دسته بندی : Sql Server

به این سوال امتیاز بدهید    ‎−1
تعداد بازدید این سوال : 3478
3 نظر
mohammad-i : منظورتون از فیلتر قسمت group by هست؟

امتیاز کاربر : 260   رتبه کاربر : 7   تاریخ ثبت : 11:59 1399/09/16
yasasemani : من الان خطایی ندارم و پروسیجر درست کار می کنه فقط مشکلی که هست اینه که قبلا بر اساس مدل فیلتر می کرد وقتی داده های جدول رو زیاد کردم (رکودهایی که با رنگ قرمز توی جداول نشون دادم) دیگه بر اساس مدل فیلتر نمیشه

امتیاز کاربر : 6   رتبه کاربر : 80   تاریخ ثبت : 06:36 1399/07/21
saedbfd : بهتر هست بفرمایید خطایی که دارید چی هست. قبلا چه نتیجه ای داشته و الان چه نتیجه ای دریافت می کنید؟ با این توضیحات شما خیلی سخت میشه منظور شما رو درک کرد چه برسه به پاسخ دادن !!!

امتیاز کاربر : 1664   رتبه کاربر : 1   تاریخ ثبت : 06:16 1399/07/21
ادامه نظرات ...
هوش مصنوعی

پاسخ هوش مصنوعی

برای حل مشکل فیلتر کردن بر اساس مدل در پروسیجر خود، ابتدا مطمین شوید که مقادیر ورودی شما (پارامترهای @CarID و @CarModel) با داده های موجود در جداول مطابقت دارد. همچنین ممکن است نیاز باشد که توجه بیشتری به نحوه مقایسه مقادیر داشته باشید. در اینجا چند نکته و تغییر ممکن با توجه به کد شما آورده شده است:

1. اطمینان حاصل کنید که مقادیر @CarModel و @CarID صحیح و متناسب با داده های جدول هستند.

2. در صورتی که می خواهید تمام مدل ها را در زمان جست وجو در نظر بگیرید (به جای فیلتر بر اساس مدل خاص)، می توانید بخشی از شرط WHERE را تغییر دهید.

برای مثال، در اینجا می توانید بررسی کنید که آیا فیلتر بر اساس @CarModel به درستی کار می کند یا نه:

IF @CarID IS NOT NULL AND @CarModel IS NOT NULL
    BEGIN
        SELECT
            CarID,
            CarTitle,
            CarModels,
            RepDate,
            SUM(ValidQty) AS ValidQty,
            SUM(QuarantineQty) AS QuarantineQty,
            SUM(SecondRateQty) AS SecondRateQty
        FROM
            dbo.ProductionInventoryAnalysis 
            INNER JOIN dbo.Cars ON dbo.ProductionInventoryAnalysis.CarID = dbo.Cars.ID 
            INNER JOIN dbo.CarModel ON dbo.ProductionInventoryAnalysis.ModelID = dbo.CarModel.ID
        WHERE
            (CarID = @CarID) AND (CarModels = @CarModel) AND (RepDate BETWEEN @StartDate AND @EndDate)
        GROUP BY CarID, CarTitle, CarModels, RepDate
    END
    ELSE
    BEGIN
        -- Remove the model filter to see if you get results
        SELECT
            CarID,
            CarTitle,
            CarModels,
            RepDate,
            SUM(ValidQty) AS ValidQty,
            SUM(QuarantineQty) AS QuarantineQty,
            SUM(SecondRateQty) AS SecondRateQty
        FROM
            dbo.ProductionInventoryAnalysis 
            INNER JOIN dbo.Cars ON dbo.ProductionInventoryAnalysis.CarID = dbo.Cars.ID 
            INNER JOIN dbo.CarModel ON dbo.ProductionInventoryAnalysis.ModelID = dbo.CarModel.ID
        WHERE
            RepDate BETWEEN @StartDate AND @EndDate
        GROUP BY CarID, CarTitle, CarModels, RepDate
    END

3. اگر هیچ نتیجه ای در صورت فیلتر شدن بر اساس @CarModel پیدا نمی شود، پیشنهاد می شود که یک SELECT ساده بدون هیچ شرطی انجام دهید تا بررسی کنید که آیا داده های مورد نظر در جدول وجود دارد یا خیر.

در نهایت، اگر تغییرات در جداول به شما اجازه نمی دهند تا مدل را به درستی فیلتر کنید، ممکن است لازم باشد که داده ها را دوباره بررسی کنید یا جست وجو را اصلاح نمایید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود