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

نام تاپیک: ایجاد محصول پیشنهادی

  1. #1

    ایجاد محصول پیشنهادی

    سلام
    وقت بخیر
    سایت فروش رستوران هست و میخواهیم برای هر محصول، محصول پیشنهادی مشخص شود.
    برای هر محصول لیست محصولاتی که با محصول مورد نظر در یک سفارش بوده اند به تعداد تکرار در سفارش مرتب شوند
    این شرایط بدون در نظر گرفتن CustomerId هست
    مثال زیر: یعنی هر مشتری که جوجه سفارش میده حتما ماست هم سفارش میده پس من در محصول پیشنهادی جوجه کباب باید ماست رو بزارم
    سالاد هم باید بزارم چون از 3 تا مشتری دو تا شون که جوجه سفارش دادن سالاد هم سفارش دادن
    زیتون و کوکا هم میتونه در انتهای سبد خرید پیشنهادی باشه چون به هر حال از 3 نفری حداقل یک نفر یکی از این محصولات رو سفارش داده
    جوجه کباب ماست سالاد زیتون کوکا
    1 1 1 1 0
    1 1 0 0 1
    1 1 1 0 0

    اسکریپتی که من نوشتم ولی جواب نداد به این صورت هست
    دوستان اگر کسی میتونه راهنمایی کنه ممنون میشم
    WITH order_items_counted AS
    (
    SELECT
    oi.id,
    p.ProductId,
    p.ProductName,
    oi.Units,
    COUNT(p.ProductId) OVER (PARTITION BY oi.id) AS product_count -- Counts how many products are in each order
    FROM ProductItems p
    inner join OrderItems oi on p.OrderItemId=oi.Id
    ),
    potential_matches AS
    (
    SELECT DISTINCT
    O1.Id,
    O1.product_count,
    COUNT(O1.id) OVER (PARTITION BY O1.Id, O2.Id) AS matched_row_count -- Counts how many order matched
    FROM order_items_counted AS O1
    INNER JOIN order_items_counted AS O2
    ON O1.Id <> O2.Id -- Different Orders
    AND O1.product_count = O2.product_count -- With the same Products
    AND O1.ProductId = O2.ProductId -- Which are the same Products
    --AND O1.Units = O2.Units -- With the same Quantities
    )


    -- get matches
    SELECT DISTINCT
    Id
    FROM potential_matches AS exact_matches
    WHERE product_count = matched_row_count

  2. #2

    نقل قول: ایجاد محصول پیشنهادی

    به نظرم بدست آوردن تعداد محصولات جانبی سفارش داده شده اشتباه است. باید تعداد فاکتورهایی که دارای اون محصولات هستند رو بدست بیارید.
    اگر غذاها و هم مخلفات در یک جدول ProductItems تعریف شده اند ، باید جدول سفارش رو با خودش join کنید و حاصل رو براساس عذای اصلی و مخلفات گروهبندی کنید تا تعداد رو بتونید بدست بیارید.
    اسکریپت جداول رو قرار ندادید ولی نمونه زیر کمک میکنه که تعداد هر جفت محصولی که سفارش داده شده اند رو بدست بیارید.

    SELECT OrderDetails.ProductID, OD.ProductID as odProductID, count(OrderDetails.OrderID)
    FROM OrderDetails
    join OrderDetails as OD on (OrderDetails.OrderID = OD.OrderID and OrderDetails.ProductID <> OD.ProductID and OrderDetails.OrderDetailID < OD.OrderDetailID)
    group by OrderDetails.ProductID, OD.ProductID
    order by OrderDetails.OrderID


    میتونید در جدول محصولات، غذاها ررو مشخص کنید، در اینصورت کوئری بهتری میشه نوشت.
    حالا کافیه برای یک محصول خاص کوئری زد
    آخرین ویرایش به وسیله Mahmoud.Afrad : پنج شنبه 31 فروردین 1402 در 05:48 صبح

  3. #3

    نقل قول: ایجاد محصول پیشنهادی

    ممنون از وقتی که گذاشتید شایدبهتر باشه توضیحی در مورد جدول سفارشات بدم
    چون اسکریپت رو با شرایط جدول تغییر دادم و اجرا کردم خروجی نداد

    دو تا جدول درگیر سفارشات هستن
    order که اطلاعات خود مشترک رو داره
    orderitem اطلاعات سفارش هست و ما با این جدول کار داریم
    یعنی محصولات و مخلفات
    جدول اردر فیلدی به نام id داره که guid هست و در جدول orderitem کلید خارجی

    فیلد های جدول orderitem
    [Id]
    ,[ProductName]
    ,[Units]
    ,[OrderId]
    ,[BaseProductId]
    ,[ProductCode]

  4. #4

    نقل قول: ایجاد محصول پیشنهادی

    ممنون از وقتی که گذاشتید شایدبهتر باشه توضیحی در مورد جدول سفارشات بدم
    چون اسکریپت رو با شرایط جدول تغییر دادم و اجرا کردم خروجی نداد

    دو تا جدول درگیر سفارشات هستن
    order که اطلاعات خود مشترک رو داره
    orderitem اطلاعات سفارش هست و ما با این جدول کار داریم
    یعنی محصولات و مخلفات
    جدول اردر فیلدی به نام id داره که guid هست و در جدول orderitem کلید خارجی

    فیلد های جدول orderitem
    [Id]
    ,[ProductName]
    ,[Units]
    ,[OrderId]
    ,[BaseProductId]
    ,[ProductCode]

  5. #5

    نقل قول: ایجاد محصول پیشنهادی

    اسکریپت جداول رو قرار بدید

  6. #6

    نقل قول: ایجاد محصول پیشنهادی

    ممنون که وقت میزارید
    اسکریپت ایجاد orderitem ونمونه دیتاها ارسال شد

    orderitem.png








    CREATE TABLE [dbo].[OrderItems](
    [Id] [uniqueidentifier] NOT NULL,
    [ProductName] [nvarchar](50) NOT NULL,
    [Description] [nvarchar](100) NULL,
    [UnitPrice] [bigint] NOT NULL,
    [Discount] [bigint] NOT NULL,
    [Units] [float] NOT NULL,
    [OrderId] [uniqueidentifier] NOT NULL,
    [BaseProductId] [int] NOT NULL,
    [VAT] [bigint] NOT NULL,
    [CatalogTypeId] [int] NOT NULL,
    [CatalogTypeName] [nvarchar](100) NOT NULL,
    [ProductCode] [nvarchar](50) NULL,
    [PackagingCost] [int] NOT NULL,
    [VATPercent] [int] NOT NULL)

  7. #7

    نقل قول: ایجاد محصول پیشنهادی

    ProductCode چیه؟ کلیدخارجیه؟ BaseProductIdچطور؟

    ProductName نباید توی این جدول باشه همچنین CatalogTypeName

  8. #8

    نقل قول: ایجاد محصول پیشنهادی

    کوئری زیر رو تست کنید
    WITH oItems AS (
    SELECT ROW_NUMBER () OVER ( PARTITION BY order_id ) AS RowNum,
    order_items.item_id,
    order_items.order_id,
    products.product_id,
    products.product_name
    FROM order_items
    JOIN products on order_items.product_id = products.product_id
    )
    SELECT oItems.product_id as p1_id,
    oItems.product_name p1_name,
    OD.product_id as p2_id,
    od.product_name as p2_name,
    count(oItems.item_id) AS Count_Of_Order
    FROM oItems
    JOIN oItems as OD on (oItems.order_id = OD.order_id and oItems.product_id <> OD.product_id and oItems.RowNum < OD.RowNum)
    group by oItems.product_id, OD.product_id
    order by oItems.order_id

    اسکریپت ضمیمه شده
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله Mahmoud.Afrad : جمعه 01 اردیبهشت 1402 در 17:01 عصر

  9. #9

    نقل قول: ایجاد محصول پیشنهادی

    ممنون
    ذهنیت - تون رو از اینکه چند تا جدول بزارید کنار
    یک جدول داریم order که اطلاعات خود مشتری رو نگه میداره و یک ای دی به عنوان کلید اصلی داره
    یک جدول داریم Orderitem که اطلاعات خرید مشتری رو نگه میداره - ای دی کلید اصلی - Orderid کلید خارجی و کلید دیگه ای نداره
    باقی دیتاها مثل baseproduct,productcode,... که در تصویر پاسخ قبلی ارسال شدن در واقع دیتاهایی هستن که از طریق اسکریپت ETL در جدول درج شدن
    جدول Orderitem که می بینیم یکی از جداول BI یا warehouse هست و دیتاها بر اساس join جداول دیگر درج شدن
    پس ما فقط Orderitem کار داریم و اگر join هم باشه باید با خودش باشه
    با این توضیح صورت مسئله رو یکم بیشتر توضیح بدم
    مثلا از مجموع 3 تا مشتری که خرید کردن
    پتتزا مخلوط خرید کردن هر سه کوکا هم خریدن
    پس گام اول برای مشتری چهارم وقتی هنوز توی سایت هست و لاگین نکرده اگر روی پیتزا مخلوط کلیک کرد پایین صفحه قسمت پیشنهادی اول گزینه کوکا رو ببینه


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


    سوم : سه تا مشتری پیتزا مخلوط و کوکا و سیب زمینی خریدن - یکیشون قارچ سوخاری هم سفارش داده
    پس مشتری چهارم پیتزا مخلوط کوکا سیب زمینی قارچ سوخاری رو باید به عنوان پیشنهاد ببینه




    مشتری میشه OrderId
    ایتم هر سفارش میشه Id جدول Orderitem و باقی اطلاعات خرید مشتری

  10. #10

    نقل قول: ایجاد محصول پیشنهادی

    من همون پست اول متوجه شدم چی میخواهی.

    اگر نیاز داری روی دیتابیس خودت جواب بده ، اسکریپت جداول رو برام بفرستید در غیر اینصورت پست قبلی (فروشگاه دوچرخه) رو ببینید.


    در کدی که ارسال کردم جدول orderitems با خودش join میشه تا متوجه بشیم کدوم محصولات با هم خریده شده اند.
    راه ساده تر اینکه، میتوانید فاکتورهایی که مثلا پیتزا سفارش داده اند را سلکت کنید و ببینید چه آیتم های دیگری غیر از پیتزا هم در اون فاکتورها هست و اونها رو پیشنهاد بدید.
    select 
    order_items.order_id,
    order_items.product_id
    from order_items
    where order_items.product_id<>@pid AND
    order_items.order_id in (select order_id
    from order_items
    where order_items.product_id=@pid)

    آیدی مثلا پیتزا رو به پارامتر ارسال کنید.
    نام ستونها گویاست، مطابق جدول خودتون اصلاح کنید

  11. #11

    نقل قول: ایجاد محصول پیشنهادی

    ممنون وقت گذاشتید
    با همون اسکریپت دوچرخه، اسکریپت رو اصلاح میکنم
    موفق باشید
    ممنونم ازتون

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

  1. پاسخ: 5
    آخرین پست: چهارشنبه 19 تیر 1398, 01:28 صبح
  2. پیدا کردن تمام محصولات یک دسته بندی سلسله مراتبی
    نوشته شده توسط هادی2020 در بخش MySQL
    پاسخ: 1
    آخرین پست: سه شنبه 18 فروردین 1394, 17:30 عصر
  3. پیش فرض ماژول رنگ بندگی محصولات در جوملا
    نوشته شده توسط servicesportal در بخش توسعه وب (Web Development)
    پاسخ: 0
    آخرین پست: دوشنبه 22 اردیبهشت 1393, 11:44 صبح
  4. پیدا کردن محصول با استفاده از عنوان محصول
    نوشته شده توسط i-php-i در بخش PHP
    پاسخ: 14
    آخرین پست: پنج شنبه 11 اردیبهشت 1393, 10:04 صبح
  5. گفتگو: شما چه روشی رو واسه پخش و فروش محصولات نرم افزاری پیشنهاد می کنید
    نوشته شده توسط programerinfonet در بخش C#‎‎
    پاسخ: 0
    آخرین پست: سه شنبه 08 مرداد 1392, 16:49 عصر

برچسب های این تاپیک

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

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