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

نام تاپیک: دستور فقط در کوئری

  1. #1
    کاربر دائمی آواتار m.4.r.m
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    تبریز
    پست
    1,407

    دستور فقط در کوئری

    دو تا جدول داریم یکی مشتری یکی محصول

    در جدول محصول برای مشتری چند محصول همزمان ثبت کرده ایم.
    سوال میخواهیم با دستور جوین بین این دو جدول فقط مشتری هایی رو نشون بده که فقط محصول مد نظر رو خریداری نکرده اند.

    مشتری یک: سایپا
    مشتری یک: ایران خودرو
    مشتری دو: سایپا

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

  2. #2
    کاربر دائمی آواتار mmbguide
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    منظومه شمسی
    پست
    1,170

    نقل قول: دستور فقط در کوئری

    سلام

    میتونید در جایی که دارید شرط رو اعمال میکنید از Not Like استفاده کنید. همه محصولاتی را نمایش بده که در لیست محصولات ایران خودرو وجود ندارد: Not Like 'ایران خودرو'

  3. #3
    کاربر دائمی آواتار m.4.r.m
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    تبریز
    پست
    1,407

    نقل قول: دستور فقط در کوئری

    تو این دستور مشتری اول رو هم نشون میده چون سایپا داره من میخوام دستوری بنویسم که فقط مشتری ۲ رو نشون بده که ایران خودرو نداره حالا اینجا هر مشتری دو تا محصول ثبت شده ممکنه چند صد تا محصول دیگه به اسمش باشه

  4. #4
    کاربر دائمی آواتار mmbguide
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    منظومه شمسی
    پست
    1,170

    نقل قول: دستور فقط در کوئری

    من سه تا جدول مطابق تصویر زیر ایجاد کردم و اطلاعات اولیه را هم ثبت کردم

    sql1.png


    • جدول مشتری ها
    • جدول محصولات
    • جدل سفارش


    در جدول سفارش یکی از مشتری ها یک محصول کمتر خرید کرده است و قراره که در خروجی مشتریانی حذف شوند که محصول مورد نظر را خرید نکرده اند.

    select 
    *
    from
    tblOrder
    where
    fldProductID in (10,11,13) and
    fldCustomerID <> (select top 1 fldCustomerID from tblOrder where fldProductID not in(12))


    توضیحات بخش where:
    • شرط اول میگه سفارشاتی که شامل محصولات شماره 10، 11 و 13 هستند را نمایش بده
    • شرط دوم میگه فقط مشتریانی که فاقد محصول شماره 12 هستند را نادیده بگیر


    در نمونه بالا هدف از استفاده in و not in این هستش که بتونید محصولات بیشتری را در شرط لحاظ کنید.

    خروجیی دستور بالا:

    sql2.png

    البته ممکنه راه های بهتری برای اینکار وجود داشته باشه ولی فعلا این به ذهنم رسیده

  5. #5
    کاربر دائمی آواتار mmbguide
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    منظومه شمسی
    پست
    1,170

    نقل قول: دستور فقط در کوئری

    در نمونه بالا این امکان وجود داشت که تنها یک مشتری نادیده گرفته بشه. علامت <> و استفاده از top 1.

    در نمونه پایین بجای استفاده از <> من از not in استفاده کردم و عبارت top 1 را حذف کردم تا خروجی دستور select بتونه تمام مقادیر را برگردونه. در نتیجه محدودیت تعداد مشتری هایی که باید نادیده گرفته بشن هم برداشته شده:

    select 
    *
    from
    tblOrder
    where
    fldProductID in (10,11,13) and
    fldCustomerID not in (select fldCustomerID from tblOrder where fldProductID not in(12))

  6. #6
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,044

    نقل قول: دستور فقط در کوئری

    یک راه این هست که اول id خریدارانی که محصول "ایران خودرو" خریدن رو پیدا کنین و بعد اونها رو از خروجی کنار بگذارین:
    SELECT customer_name,... FROM customers
    WHERE customer_id NOT IN
    (SELECT customer_id FROM customers
    INNER JOIN orders
    ON customers.customer_id=orders.customer_id AND orders.product_name='IranKhodro')

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

  1. حرفه ای: روش های جاگزین کردن دستورات مشابه خروجی و ورودی به جای دستوراتی مثل printf و یا scanf
    نوشته شده توسط motherboard در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 2
    آخرین پست: دوشنبه 29 اردیبهشت 1393, 22:50 عصر
  2. پاسخ: 4
    آخرین پست: سه شنبه 23 مهر 1392, 05:57 صبح
  3. پاسخ: 3
    آخرین پست: چهارشنبه 03 فروردین 1390, 23:51 عصر

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

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