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

نام تاپیک: اشتراک گرفتن در sql

  1. #1

    اشتراک گرفتن در sql

    با سلام.

    دوستان میخوایم یه کوءری بنویسم که اگه در یک فاکتور کالاهای فاکتور اگر متعلق به 4 گروه مختلف کالا بودند شماره فاکتور رو بهم برگردونه و اگه کالاهای فاکتور در کمتر از 4 گروه بود چیزی بهم برنگردونه.


    select code_customer,Factor_Number from Forosh
    where (Goroh_kalah=1 and Goroh_kalah=2 and Goroh_kalah=3 and Goroh_kalah=4)
    group by code_customer,Factor_Number
    من این کد رو مینویسم .ولی هیچی بهم برنمیگردونه.در حالی که چند تا فاکتور دارم که 4 تا گروه کالای شرط شده درش وجود داره.
    میشه بگید اشتباه کارم کجاست؟

  2. #2
    کاربر تازه وارد آواتار svhasvha
    تاریخ عضویت
    آذر 1390
    محل زندگی
    کرمانشاه
    پست
    89

    نقل قول: اشتراک گرفتن در sql

    سلام جواب نمیده چون گروه کالا توی جدول فروش نمیتونه همزمان هم یک باشه هم 2 هم 3 هم 4
    شما از اند استفاده کردی
    صورت سوال یه خورده گنگه
    اگه من درست متوجه شدم
    شما میخوای بدونی اگه تو یه فاکتو یه یه تعداد اقلام کالا توش ثبت شده اگر یکی از کالا ها جزع 4 گروه خاص از گروه های کالا باشه اون شماه فاکتور رو برات برگردونه؟؟

    اگه مسله اینه
     where Goroh_kalah in (1,2,3,4)

    اگه نه بیشتر توضیح بده واگه بتونی یه بک آپ از بانکد بفرستی راحت تر میشه کمک کرد

  3. #3

    نقل قول: اشتراک گرفتن در sql

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

  4. #4

    نقل قول: اشتراک گرفتن در sql

    نقل قول نوشته شده توسط حمیدرضاصادقیان مشاهده تاپیک
    سلام
    کدی که نوشتین درسته چون میخواهید در هر 4 تا گروه باشه ولی کدی که دوستمون نوشتن در هرکدوم باشه مقدار برمیگردونه واین با نیاز شما تفاوت داره
    بهتره یک نمونه دیتایی رو قرار بدین که ببینیم ساختار دیتایی شما چه شکلیه براساس اون بشه کوئری رو پیشنهاد داد
    سلام.با تشکر از توجهتون.
    ببنید مثلا فرض کنیم 3 تا فاکتور داریم که در هر فاکتور 10 قلم جنس وجود داره.
    اقلامی که در فاکتور شماره 1 وجود دارند مربوط به گروه کالاهای 1 و 3 و 6 و 7 و 10 هستند
    اقلامی که در فاکتور شماره 2 وجود دارند مربوط به گروه کالاهای 1و2 و3و 4 هستند
    اقلامی که در فاکتور شماره 3 وجود دارند به گروه کالاهای 1و3 هستند.
    حالا من میخوام فقط شماره فاکتوری و نام مشتری رو بهم برگردونه که کالاهای اون فاکتور، حتما شامل 4 گروه کالای 1و2و3و4 باشن.
    یعنی در واقع فقط باید فاکتور شماره 2 رو بهم برگردونه (اشتراک)

    البته یه حالت دیگه هم مد نظرم هست .اونم اینجوریه که که اگه فاکتوری 4 گروه کالا رو پوشش داد شماره فاکتور رو بهم برگردونه.یعنی دیگه تو where نیام صراحتا شماره گروه کالاها رو بیارم.یه حالت شناور داشته باشه.
    که در این صورت اینجوری باید هم فاکتور شماره 1 و هم فاکتور شماره 2 رو بهم برگردونه که اگه اشتباه نکنم اینجا میشه با having count(goroh_kala)>=4 به جواب رسید



    ممنون میشم برای هر دو حالت و مخصوصا حالت اول راهنمایی بفرمائید

  5. #5

    نقل قول: اشتراک گرفتن در sql

    نقل قول نوشته شده توسط taknavaz123 مشاهده تاپیک
    سلام.با تشکر از توجهتون.
    ببنید مثلا فرض کنیم 3 تا فاکتور داریم که در هر فاکتور 10 قلم جنس وجود داره.
    اقلامی که در فاکتور شماره 1 وجود دارند مربوط به گروه کالاهای 1 و 3 و 6 و 7 و 10 هستند
    اقلامی که در فاکتور شماره 2 وجود دارند مربوط به گروه کالاهای 1و2 و3و 4 هستند
    اقلامی که در فاکتور شماره 3 وجود دارند به گروه کالاهای 1و3 هستند.
    حالا من میخوام فقط شماره فاکتوری و نام مشتری رو بهم برگردونه که کالاهای اون فاکتور، حتما شامل 4 گروه کالای 1و2و3و4 باشن.
    یعنی در واقع فقط باید فاکتور شماره 2 رو بهم برگردونه (اشتراک)

    البته یه حالت دیگه هم مد نظرم هست .اونم اینجوریه که که اگه فاکتوری 4 گروه کالا رو پوشش داد شماره فاکتور رو بهم برگردونه.یعنی دیگه تو where نیام صراحتا شماره گروه کالاها رو بیارم.یه حالت شناور داشته باشه.
    که در این صورت اینجوری باید هم فاکتور شماره 1 و هم فاکتور شماره 2 رو بهم برگردونه که اگه اشتباه نکنم اینجا میشه با having count(goroh_kala)>=4 به جواب رسید



    ممنون میشم برای هر دو حالت و مخصوصا حالت اول راهنمایی بفرمائید
    اگر فقط میخواهید که کالاهایی از 4 گروه مختلف در فاکتور باشند دقیقا باید از having استفاده کنید . نکته اینکه در count(goroh_kala) یک distinct داخل پرانتز بگذارید. چون ممکن هست از یک گروه چند قلم کالا در فاکتور باشد
    http://sqlfiddle.com/#!9/cbde73/2

  6. #6

    نقل قول: اشتراک گرفتن در sql

    نقل قول نوشته شده توسط Mahmoud.Afrad مشاهده تاپیک
    اگر فقط میخواهید که کالاهایی از 4 گروه مختلف در فاکتور باشند دقیقا باید از having استفاده کنید . نکته اینکه در count(goroh_kala) یک distinct داخل پرانتز بگذارید. چون ممکن هست از یک گروه چند قلم کالا در فاکتور باشد
    http://sqlfiddle.com/#!9/cbde73/2
    نه.مورد اول بیشتر مد نظرمه.حالت دوم و استفاده از having با رعایت distinct رو مشکلی ندارم.
    ولی برای حالت اول نمیدونم چیکار کنم

  7. #7

    نقل قول: اشتراک گرفتن در sql

    نقل قول نوشته شده توسط taknavaz123 مشاهده تاپیک
    نه.مورد اول بیشتر مد نظرمه.حالت دوم و استفاده از having با رعایت distinct رو مشکلی ندارم.
    ولی برای حالت اول نمیدونم چیکار کنم
    یعنی لیست گروه را هم خودتون میخواهید تعیین کنید؟
    اگر بله لینک زیر جواب شماست.
    http://sqlfiddle.com/#!9/ebcc7c/6
    به جای جدول requested از متغیر یا پارامتر برای ارسال گروه کالاهای مورد نظر استفاده کنید.


    به طریقی باید چک شود همه رکوردهای گروه دارای مقدار مورد نظر هست یا نه.

    دوستان شاید راه بهتری پیشنهاد بدن.

  8. #8

    نقل قول: اشتراک گرفتن در sql

    اگر اسم گروهها و شماره گروهها و تعدادش نیز ممکنه تغییرکنه و کم و زیاد بشه بهتره رشته Where رو به صورت Dynamic بسازیدو به یک SP پاس بدین

  9. #9

    نقل قول: اشتراک گرفتن در sql

    نقل قول نوشته شده توسط حمیدرضاصادقیان مشاهده تاپیک
    اگر اسم گروهها و شماره گروهها و تعدادش نیز ممکنه تغییرکنه و کم و زیاد بشه بهتره رشته Where رو به صورت Dynamic بسازیدو به یک SP پاس بدین
    ممنون.ولی ثابته گروه ها.
    الان فعلا گیر همین ثابتم که هیچ خروجی بهم نمیده

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

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