نمایش نتایج 1 تا 26 از 26

نام تاپیک: فوری++++ کوئری خاص

  1. #1
    کاربر دائمی آواتار modern_amin
    تاریخ عضویت
    آذر 1389
    محل زندگی
    کنار شما !
    پست
    595

    فوری++++ کوئری خاص

    سلام
    من کوئری زیر (توضیحات در عکس) رو میخام بگیرم ولی موندم
    اول خواستم DISTINCT بگیرم براساس نام که غیرتکراری رو نشون نده و بعد بیام SUM بگیرم ولی خطا میخورم
    بعد خواستم از WITH MyBigProducts استفاده کنم توش موندم و چندتا چیز دیگم به فکرم رسید که به جواب نرسیدم......


  2. #2

    نقل قول: فوری++++ کوئری خاص

    بهتره اطلاعات رو توسط group by گروه بندی کنی و بعد رو هر گروه محاسباتی رو که میخوای روی فیلدهاش انجام بدی و خروجی رو برای هر گروه تک سطر بگیری.

  3. #3
    کاربر دائمی آواتار mohammad reza beizavi
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    Iran - Fars - Shiraz
    پست
    375

    نقل قول: فوری++++ کوئری خاص

    درود بر شما
    باید اینجور بشه:
    SELECT name,SUM(bed) as BES,sum(bes) as BES, sum(bed)-sum(bes) as vaziyat FROM FN.Table1 group by Name;

  4. #4
    کاربر دائمی آواتار modern_amin
    تاریخ عضویت
    آذر 1389
    محل زندگی
    کنار شما !
    پست
    595

    نقل قول: فوری++++ کوئری خاص

    ممنون از پاسختون

    تو جدول من یک فیلد دیگه بنام شناسه ( ID ) هم هست
    زمانی گه میخام براساس آخر به اول مرتب کنم
    یا زمانیکه میخام با توجه به نام طرف شمارشو در بیارم (join) به خطا میخورم

    آیا میشه از جواب کوئری دوباره کوئری نوشت؟
    بدین ترتیب که با توجه به هرنام در هر سطر من سلکتی از جدول دیگه بگیرم ؟؟

  5. #5

    نقل قول: فوری++++ کوئری خاص

    آره

    select * from (select * from table)

  6. #6
    کاربر دائمی آواتار modern_amin
    تاریخ عضویت
    آذر 1389
    محل زندگی
    کنار شما !
    پست
    595

    نقل قول: فوری++++ کوئری خاص

    ممنون از پاسختون

    بله درسته ولی اون حالت کلی هست

    ینی مثلا همچین دستوری......

    SELECT NAME,SEN , (select tel from Tmoshakhasat where name= & current_Row_cell [0] ) FROM TSTU

  7. #7
    کاربر دائمی آواتار mohammad reza beizavi
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    Iran - Fars - Shiraz
    پست
    375

    نقل قول: فوری++++ کوئری خاص

    برای هر فیلد یه query نمیشه گرفت، اما شما می تونید کوئری رو به صورت function بنویسید و اینطور مسئله رو حل کنید:

    SELECT NAME,SEN ,dbo.fnGetMoshtarakByName('ali') FROM TSTU

    fnGetMoshrakByName یه تابع هست که مقدار رشته ای نام رو میگیره و در صورت موجود بودن شماره تلفن و در غیر اینصورت عدد صفر رو بر می گردونه.

  8. #8

    نقل قول: فوری++++ کوئری خاص


    select id,name,sum(bed)as bedSum,sum(bes) as besSum,sum(bed)-sum(bes) as result from sample
    group by name
    order by id desc


    حالت کلی باید این باشه. شما برای چی آی دی رو میخوای؟ function هم خوبه اما الان اکثرا بار رو از پایگاه داده برمیدارن و میذارن رو زبونای برنامه نویسی

  9. #9
    کاربر دائمی آواتار modern_amin
    تاریخ عضویت
    آذر 1389
    محل زندگی
    کنار شما !
    پست
    595

    نقل قول: فوری++++ کوئری خاص

    اتفاقا با نظر شما مخالفم علی آقا ali.shahrivarian
    سرعت تو پایگاه داده فوق العادس
    الان برا همین سوال من ، اگه بتونم کوئریشو بنویسم لازم نیست یک خط 1000 بار تکرار بشه





    آخ که اگه بشه عالی میشه و واقعااا ممنون ازتون...

    آقای mohammad reza beizavi میشه سمپلی بزارید من سردربیارم ازش؟؟

  10. #10

    نقل قول: فوری++++ کوئری خاص

    درسته که سرعت تو پایگاه داده بالاست اما ما برای مقیاس های کم مقایسه رو انجام نمیدیم. اگر به اطلاعات بالا و تراکنش های بالا نگاه کنیم میبینیم که اجرا شدن یک تابع در زبانی مثل سی شارپ میتونه بهتر از پایگاه داده جواب بده. البته این نظر من هست.
    آخرین ویرایش به وسیله ali.shahrivarian : سه شنبه 25 شهریور 1393 در 15:16 عصر

  11. #11
    کاربر دائمی آواتار mohammad reza beizavi
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    Iran - Fars - Shiraz
    پست
    375

    نقل قول: فوری++++ کوئری خاص

    نمونه function:

    CREATE FUNCTION [dbo].[fnGetMoshtarakByName]
    (
    @name nvarchar(15)
    )
    RETURNS nvarchar(15)
    AS
    BEGIN
    DECLARE @tel AS NVARCHAR(15)




    IF(EXISTS(SELECT tel FROM [Tmoshakhasat] WHERE [Tmoshakhasat].name=@name))
    BEGIN
    SET @tel = (SELECT tel FROM Tmoshakhasat WHERE Tmoshakhasat.name=@name);
    END
    ELSE
    BEGIN
    SET @tel = '0';
    END
    return @tel;
    END

    لطفا اگر جوابتون مربوز به پست خاصی هست از "پاسخ با نقل قول" استفاده کنید

  12. #12
    کاربر دائمی آواتار mohammad reza beizavi
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    Iran - Fars - Shiraz
    پست
    375

    نقل قول: فوری++++ کوئری خاص

    نقل قول نوشته شده توسط modern_amin مشاهده تاپیک
    اتفاقا با نظر شما مخالفم علی آقا ali.shahrivarian
    سرعت تو پایگاه داده فوق العادس
    الان برا همین سوال من ، اگه بتونم کوئریشو بنویسم لازم نیست یک خط 1000 بار تکرار بشه
    باید عرض کنم که طبق آخرین مستندات مایکروسافت برای C#‎ 4.5 و sql 2012 , 2014 سرعت اجرای کد در این برنامه ها بسیار به هم نزدیک بوده و تفاوت چندانی ندارند. با استفاده از کوئری که البته از function هم برای گرفتن result کوئری میگیره به ازای هر فیلد یک کوئری دیگه به سمت engine بانک اطلاعاتی میره.
    اما مزیت استفاده از sp و function اینه که بار هر قسمت از برنامه به دوش مسئول مستقیم خودشه(یعنی بانک اطلاعاتی) و از اون مهمتر تعداد و حجم ارجاعات از برنامه به بانک اطلاعاتی کم میشه

  13. #13
    کاربر دائمی آواتار modern_amin
    تاریخ عضویت
    آذر 1389
    محل زندگی
    کنار شما !
    پست
    595

    نقل قول: فوری++++ کوئری خاص

    ممنون از پاسختون بچه هااا
    بنظرم این دستور اگه استفاده شه سرعت برنامه هایی که کوئری هاشون یکمقدار خاص تر هست خیلی بالا میره.....

    آقای ali.shahrivarian دستوری که دادید درسته فقط زمانی که جداول رو بنده join میدم یا از یک فیلد غیرتکراری استفاده میکنم جواب غلط میده ، البته اگه رو یک جدول فقط بخاهیم کار کنیم مناسبه...

    آقای mohammad reza beizavi ممنون بابت راهنمایی ، بنظرم همین باید باشه ، اونچیزی که تو ذهنه منه خیلی به این نزدیکه....

    در ضمن آقای mohammad reza beizavi مشکل در سرعت نیست ،در تعداد دفعات تکراره ....
    آقای ali.shahrivarian اگه بشه یک جواب رو با یک تابع در اس کیوال گرفت چرا باید چندین ارسال پارامتر توسط مثلا برنامه مثل سی شارپ به sql انجام بشه؟

  14. #14

    نقل قول: فوری++++ کوئری خاص

    نقل قول نوشته شده توسط mohammad reza beizavi مشاهده تاپیک
    باید عرض کنم که طبق آخرین مستندات مایکروسافت برای C#‎‎ 4.5 و sql 2012 , 2014 سرعت اجرای کد در این برنامه ها بسیار به هم نزدیک بوده و تفاوت چندانی ندارند. با استفاده از کوئری که البته از function هم برای گرفتن result کوئری میگیره به ازای هر فیلد یک کوئری دیگه به سمت engine بانک اطلاعاتی میره.
    اما مزیت استفاده از sp و function اینه که بار هر قسمت از برنامه به دوش مسئول مستقیم خودشه(یعنی بانک اطلاعاتی) و از اون مهمتر تعداد و حجم ارجاعات از برنامه به بانک اطلاعاتی کم میشه
    تو entity وقتی میخوایم از Sql اطلاعات رو فراخوانی کنیم یک کانکشن ساخته میشه و اطلاعات برگشت داده میشه و اگر از خصوصیاتی مثل list استفاده کنیم دیگه برای تغییر یا جستجو در اطلاعات فراخوانی شده نیازی به جستجوی دوباره در پایگاه نیست و تمام تغییرات درون خود برنامه سی شارپ انجام میشه. این یک مزیت محسوب میشه و جلوی کوئری های بی دلیل رو میگیره.

  15. #15
    کاربر دائمی آواتار mohammad reza beizavi
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    Iran - Fars - Shiraz
    پست
    375

    نقل قول: فوری++++ کوئری خاص

    نقل قول نوشته شده توسط ali.shahrivarian مشاهده تاپیک
    تو entity وقتی میخوایم از Sql اطلاعات رو فراخوانی کنیم یک کانکشن ساخته میشه و اطلاعات برگشت داده میشه و اگر از خصوصیاتی مثل list استفاده کنیم دیگه برای تغییر یا جستجو در اطلاعات فراخوانی شده نیازی به جستجوی دوباره در پایگاه نیست و تمام تغییرات درون خود برنامه سی شارپ انجام میشه. این یک مزیت محسوب میشه و جلوی کوئری های بی دلیل رو میگیره.
    تویEntity framework که نه ولی توی LINQ اینکار برای این یک بار انجام میشه که معمولا تمام اطلاعات یک جدول رو cach میکنه و برای اینکه مشکلات این روش رو ببینید یک بار با نرم افزار یا سایتی که استفاده کننده زیادی داره امتحان کنید. فشار آوردن به سرور (در وب) و یا سیستم کلاینت با توجه به اینکه سرورهای قدرتمندی برای کار دیتابیس وجود داره اندکی غیر منطقی به نظر می رسه.
    البته اگر داکیومنتهای microsoft در زمینه Entity farmework رو بخونید خواهید دید که تمام کوئری های درون entity ها به sp تبدیل میشن و درون خود پایگاه داده اجرا شده و نتیجه برگشت داده میشه.

  16. #16

    نقل قول: فوری++++ کوئری خاص

    نقل قول نوشته شده توسط modern_amin مشاهده تاپیک

    آقای ali.shahrivarian اگه بشه یک جواب رو با یک تابع در اس کیوال گرفت چرا باید چندین ارسال پارامتر توسط مثلا برنامه مثل سی شارپ به sql انجام بشه؟
    همونطور که گفتم میشه اطلاعات رو در یک بار فراخوانی در برنامه نگه داشت و تغییرات رو اعمال کرد و آخر سر تغییرات رو ذخیره کرد.

  17. #17

    نقل قول: فوری++++ کوئری خاص

    نقل قول نوشته شده توسط mohammad reza beizavi مشاهده تاپیک
    تویEntity framework که نه ولی توی LINQ اینکار برای این یک بار انجام میشه که معمولا تمام اطلاعات یک جدول رو cach میکنه و برای اینکه مشکلات این روش رو ببینید یک بار با نرم افزار یا سایتی که استفاده کننده زیادی داره امتحان کنید. فشار آوردن به سرور (در وب) و یا سیستم کلاینت با توجه به اینکه سرورهای قدرتمندی برای کار دیتابیس وجود داره اندکی غیر منطقی به نظر می رسه.
    البته اگر داکیومنتهای microsoft در زمینه Entity farmework رو بخونید خواهید دید که تمام کوئری های درون entity ها به sp تبدیل میشن و درون خود پایگاه داده اجرا شده و نتیجه برگشت داده میشه.
    توی linq خودش دیتاها رو cach میکنه اما تو entity اگر به list تبدیل نکنید برای هر بار فراخوانی entity دستورات sp اجرا میشن اما همونطور که گفتم اگر به لیست تبدیل بشن تمام تغییرات درون برنامه ای میشن و دیگه به پایگاه کاری نداریم.

  18. #18

    نقل قول: فوری++++ کوئری خاص

    البته آقا محمدرضا تو دنیای امروز که همه ی مسائل با هم مرتبط هستند شما چه کدهات رو درون پایگاه بنویسی چه درون برنامه هیچ تضمینی نیست که اطلاعاتی که یک کاربر تغییر میده براش ثابت بمونه. برای این موضوع باید روش ها و الگوریتمهای جایگزین ارائه بشه و این ایراد entity یا sql نیست.

  19. #19
    کاربر دائمی آواتار mohammad reza beizavi
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    Iran - Fars - Shiraz
    پست
    375

    نقل قول: فوری++++ کوئری خاص

    نقل قول نوشته شده توسط ali.shahrivarian مشاهده تاپیک
    اما همونطور که گفتم اگر به لیست تبدیل بشن تمام تغییرات درون برنامه ای میشن و دیگه به پایگاه کاری نداریم.
    و اینکه تمام اطلاعات رو کلاینت برنامه های دسکتاپ یا سرور میزبان وب پیش خودش نگه داره و روشون کار انجام میده از نظر شما مزیته؟!!!

  20. #20
    کاربر دائمی آواتار mohammad reza beizavi
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    Iran - Fars - Shiraz
    پست
    375

    نقل قول: فوری++++ کوئری خاص

    نقل قول نوشته شده توسط ali.shahrivarian مشاهده تاپیک
    تو دنیای امروز که همه ی مسائل با هم مرتبط هستند شما چه کدهات رو درون پایگاه بنویسی چه درون برنامه هیچ تضمینی نیست که اطلاعاتی که یک کاربر تغییر میده براش ثابت بمونه. برای این موضوع باید روش ها و الگوریتمهای جایگزین ارائه بشه و این ایراد entity یا sql نیست.
    من کلا منظور این قسمت رو متوجه نشدم، مگه باید تضمینی برای اطلاعاتی که یک کاربر تغییر میده وجود داشته باشه و یا اطلاعات ثابت بمونه.
    و یه نکته در کل تکنولوژی ها هرچند کامل نیستند اما ابزار مناسبی هستن اگه ازشون به درستی استفاده بشه چه linq و چه sql و یا هر تکنولوژی دیگه ای.

  21. #21

    نقل قول: فوری++++ کوئری خاص

    نقل قول نوشته شده توسط mohammad reza beizavi مشاهده تاپیک
    و اینکه تمام اطلاعات رو کلاینت برنامه های دسکتاپ یا سرور میزبان وب پیش خودش نگه داره و روشون کار انجام میده از نظر شما مزیته؟!!!

    ببخشید منظورمو درست نرسوندم.
    منظورم اینه که برای یک تغییر کوچیک یا فراخونی و ارسال اطلاعات برای کلاینت نیازی نیست که تمام بار رو به دوش پایگاه داده بزاریم.
    البته این میتونه مزیت باشه چون اگر به سایت هایی که الان کار می کنند نگاه کنید هر کاربر اطلاعاتش با کد کاربری خودش ذخیره میشه و اطلاعات عمومی رو مدیر سایت تغییر میده نه کاربر.
    شما سایتی رو دیدید که اجازه بده تمام کاربرا تو یک لحظه یک صفحه رو تغییر بدن؟
    شاید مثال درستی نباشه اما همین صفحه رو نگاه کنید! من نمیتونم اطلاعات شما رو تغییر بدم و شما هم نمیتونید اطلاعات من رو تغییر بدید!!!
    این مسئله برای سیستم هایی مثل حسابداری مهمه که در هر لحظه باید با هر بخش در ارتباط باشن و اطلاعات RealTime تغییر میکنه. اینها هم نمیان هر لحظه با پایگاه کار کنن(البته سیستمای کوچیک مستثنی هستند).اطلاعات میتونه درون فایلهای xml باشه یا اینکه پایگاه پشتیبانی وجود داشته باشه که تک تک تغییرات رو با زمانشون ذخیره کنه تا مشکلی بوجود نیاد. اینها دیگه مسئله زمانبندیه.

  22. #22

    نقل قول: فوری++++ کوئری خاص

    نقل قول نوشته شده توسط mohammad reza beizavi مشاهده تاپیک
    من کلا منظور این قسمت رو متوجه نشدم، مگه باید تضمینی برای اطلاعاتی که یک کاربر تغییر میده وجود داشته باشه و یا اطلاعات ثابت بمونه.
    و یه نکته در کل تکنولوژی ها هرچند کامل نیستند اما ابزار مناسبی هستن اگه ازشون به درستی استفاده بشه چه linq و چه sql و یا هر تکنولوژی دیگه ای.
    منظورم اینه که ممکنه چند کاربر بر روی یک تاپل کار کنن و این موضوع مشکلاتی رو در پی داره.
    بخش دوم حرفتون رو هم قبول دارم.

  23. #23
    کاربر دائمی آواتار mohammad reza beizavi
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    Iran - Fars - Shiraz
    پست
    375

    نقل قول: فوری++++ کوئری خاص

    نقل قول نوشته شده توسط ali.shahrivarian مشاهده تاپیک
    ببخشید منظورمو درست نرسوندم.
    منظورم اینه که برای یک تغییر کوچیک یا فراخونی و ارسال اطلاعات برای کلاینت نیازی نیست که تمام بار رو به دوش پایگاه داده بزاریم.
    البته این میتونه مزیت باشه چون اگر به سایت هایی که الان کار می کنند نگاه کنید هر کاربر اطلاعاتش با کد کاربری خودش ذخیره میشه و اطلاعات عمومی رو مدیر سایت تغییر میده نه کاربر.
    شما سایتی رو دیدید که اجازه بده تمام کاربرا تو یک لحظه یک صفحه رو تغییر بدن؟
    شاید مثال درستی نباشه اما همین صفحه رو نگاه کنید! من نمیتونم اطلاعات شما رو تغییر بدم و شما هم نمیتونید اطلاعات من رو تغییر بدید!!!
    این مسئله برای سیستم هایی مثل حسابداری مهمه که در هر لحظه باید با هر بخش در ارتباط باشن و اطلاعات RealTime تغییر میکنه. اینها هم نمیان هر لحظه با پایگاه کار کنن(البته سیستمای کوچیک مستثنی هستند).اطلاعات میتونه درون فایلهای xml باشه یا اینکه پایگاه پشتیبانی وجود داشته باشه که تک تک تغییرات رو با زمانشون ذخیره کنه تا مشکلی بوجود نیاد. اینها دیگه مسئله زمانبندیه.
    فکر می کنم شما یه سری مسائل رو که جز بدیهیات و وظایف بانک اطلاعاتی هست (ماندد جلوگیری از همزمانی با تکنیکهایی مانند Lock table و lock row)، فراموش کردید. این checking ها رو خود دیتابیس انجام میده، و نیازی به مدیریت توسط مدیر سایت و برنامه نداره.
    آقا بحثمون داره به دارازا میکشه و شاید بینندگان سایت رو خسته کنه. من از چت روم یا امکانات دیگه ای که برای بحث دونفره توی سایت باشه خبر ندارم. اگر میدونید چیزی بگید تا اونجا به بحثمون ادامه بدیم

  24. #24

    نقل قول: فوری++++ کوئری خاص

    نقل قول نوشته شده توسط mohammad reza beizavi مشاهده تاپیک
    فکر می کنم شما یه سری مسائل رو که جز بدیهیات و وظایف بانک اطلاعاتی هست (ماندد جلوگیری از همزمانی با تکنیکهایی مانند Lock table و lock row)، فراموش کردید. این checking ها رو خود دیتابیس انجام میده، و نیازی به مدیریت توسط مدیر سایت و برنامه نداره.
    آقا بحثمون داره به دارازا میکشه و شاید بینندگان سایت رو خسته کنه. من از چت روم یا امکانات دیگه ای که برای بحث دونفره توی سایت باشه خبر ندارم. اگر میدونید چیزی بگید تا اونجا به بحثمون ادامه بدیم
    راست میگی. بینندگان گرامی از شما پوزش میطلبیم.
    من تو یاهو تو زمان کاریم آنلاینم.

  25. #25
    کاربر دائمی آواتار modern_amin
    تاریخ عضویت
    آذر 1389
    محل زندگی
    کنار شما !
    پست
    595

    نقل قول: فوری++++ کوئری خاص

    داشتین استفاده میکردیم....

    من فقط دوتا سوال داشتم نخاستم بپرم وسط حرفتون...

    ---با کمک شما کوئری رو نوشتم همونیه که میخاستم
    فقط بعد اجرا و نمایش سطرهای اولی بعد یک ثانیه خطا میده که نمیتونه رشته رو تبدیل به عدد کنه....
    یکمقدار روش کار کردم ولی همچنان این خطای ریز رو میده


    --- تو اس کیوال 2008 آر2
    باید روی -scalar valued function ساخت؟ درسته؟
    یا توی inline table و یا multi statement ؟؟
    یا روی

  26. #26
    کاربر دائمی آواتار mohammad reza beizavi
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    Iran - Fars - Shiraz
    پست
    375

    نقل قول: فوری++++ کوئری خاص

    نقل قول نوشته شده توسط modern_amin مشاهده تاپیک
    فقط بعد اجرا و نمایش سطرهای اولی بعد یک ثانیه خطا میده که نمیتونه رشته رو تبدیل به عدد کنه....
    یکمقدار روش کار کردم ولی همچنان این خطای ریز رو میده


    --- تو اس کیوال 2008 آر2
    باید روی -scalar valued function ساخت؟ درسته؟
    یا توی inline table و یا multi statement ؟؟
    یا روی
    Scalar Valued function درسته، اما اونکه error میده به خاطر کوئری که داخل function انجام میدید، مثلا اینکه یه رشته مثل '2_' رو بخواید به عدد تبدیل کنید.
    اگه جزییات بیشتری بدید بهتر میشه نظر داد.

تاپیک های مشابه

  1. مبتدی: گزارش گیریstimulreport با استفاده از کوئری خاص در LINQ
    نوشته شده توسط vbiman در بخش دسترسی به داده ها (ADO.Net و LINQ و ...)
    پاسخ: 13
    آخرین پست: شنبه 08 بهمن 1390, 18:29 عصر
  2. سوال: یک کوئری خاص
    نوشته شده توسط ma.rad در بخش C#‎‎
    پاسخ: 5
    آخرین پست: شنبه 17 دی 1390, 22:55 عصر
  3. مبتدی: گزارش گیریstimulreport با استفاده از کوئری خاص در LINQ
    نوشته شده توسط vbiman در بخش ابزارهای گزارش سازی
    پاسخ: 0
    آخرین پست: چهارشنبه 27 مهر 1390, 22:00 عصر
  4. یک کوئری خاص
    نوشته شده توسط Site Admin در بخش T-SQL
    پاسخ: 3
    آخرین پست: چهارشنبه 23 شهریور 1390, 19:26 عصر
  5. سوال: نوشتن یک کوئری خاص
    نوشته شده توسط unique1984 در بخش SQL Server
    پاسخ: 5
    آخرین پست: شنبه 01 خرداد 1389, 17:05 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •