لینک‌های مفید برای شرکت در مسابقه:

در زمان مسابقه می‌توانید سوال‌های خود را از قسمت "سوال بپرسید" مطرح کنید.

بعد از مسابقه در ساعت ۱۹:۰۰ امروز وبیناری برای حل بخشی از سوالات مسابقه و پاسخگویی به سوالات شما تدارک دیده‌ایم که می‌توانید از طریق این لینک شرکت نمایید. دقت کنید که در هنگام ورود باید گزینه مهمان را انتخاب نمایید.

MySQL - آشپزباشی


کد شما باید روی نسخه‌ی استاندارد MySQL قابل اجرا باشد. برای چک کردن سینتکس کد SQL خود می‌توانید از این وبسایت کمک بگیرید.


حمید یک برنامه‌نویس حرفه‌ای است. او اخیراً به آشپزی علاقه‌مند شده و تصمیم گرفته تا یک وبسایت برای به‌اشتراک‌گذاری دستور پخت‌های انحصاری‌اش راه‌اندازی کند. او می‌خواهد قابلیت‌های پیشرفته‌ای را در وبسایتش ارائه دهد. برای مثال، این قابلیت که کاربران بتوانند مواد اولیه‌ی موجودشان را در سایت ثبت کرده و سیستم بتواند لیست غذاهایی که با استفاده از مواد اولیه‌شان قابل پخت هستند را نمایش دهد. هم‌چنین، کاربران امکان امتیازدهی (از ۱ تا ۵) به دستور پخت‌ها را دارند.

حمید به‌خوبی از پس طراحی جداول دیتابیس سایتش برآمده، اما برای نوشتن کوئری‌هایش به کمک شما نیاز دارد.

جزئیات پروژه🔗

پایگاه داده‌ی اولیه‌ی سایت حمید شامل ۶ جدول با اسامی و ساختارهای زیر است:

  1. جدول کاربران (users):
نام ستون نوع تعریف ملاحضات
id int(11) شناسه‌ی کاربر primary key auto_increment
username varchar(255) نام کاربری کاربر
  1. جدول غذاها (foods):
نام ستون نوع تعریف ملاحضات
id int(11) شناسه‌ی غذا primary key auto_increment
name varchar(255) نام غذا
recipe text متن دستور پخت غذا
  1. جدول مواد اولیه (ingredients):
نام ستون نوع تعریف ملاحضات
id int(11) شناسه‌ی ماده‌ی اولیه primary key auto_increment
name varchar(255) نام ماده‌ی اولیه
price_per_unit decimal(10,2) قیمت واحد ماده‌ی اولیه
  1. جدول مواد اولیه‌ی غذاها (food_ingredients):
نام ستون نوع تعریف ملاحضات
id int(11) شناسه‌ی ماده‌ی اولیه‌ی غذا primary key auto_increment
food_id int(11) شناسه‌ی غذا foreign key (foods)
ingredient_id int(11) شناسه‌ی ماده‌ی اولیه foreign key (ingredients)
amount decimal(10,2) مقدار ماده‌ی اولیه
  1. جدول مواد اولیه‌ی کاربران (user_ingredients):
نام ستون نوع تعریف ملاحضات
id int(11) شناسه‌ی ماده‌ی اولیه‌ی کاربر primary key auto_increment
user_id int(11) شناسه‌ی کاربر foreign key (users)
ingredient_id int(11) شناسه‌ی ماده‌ی اولیه foreign key (ingredients)
amount decimal(10,2) مقدار ماده‌ی اولیه
  1. جدول امتیازات کاربران به غذاها (ratings):
نام ستون نوع تعریف ملاحضات
id int(11) شناسه‌ی امتیاز primary key auto_increment
user_id int(11) شناسه‌ی کاربر foreign key (users)
food_id int(11) شناسه‌ی غذا foreign key (foods)
rate tinyint(1) امتیاز

مطلوبات🔗

کوئری‌های SQL خواسته‌شده از شما موارد زیر است (توجه کنید که هر کوئری نمره‌ای جداگانه دارد و اگر کوئری یک قسمت را نتوانستید بزنید، کوئری‌هایی که حل کردید را بفرستید و قسمت آن کوئری را خالی بگذارید):

  1. حمید قبلاً دستور پخت‌هایش را در کانال @hamid_ashpazbashi2 به اشتراک می‌گذاشته. حال، نام کاربری کانالش را به @hamid_ashpazbashi تغییر داده است. او اکنون می‌خواهد همه‌ی @hamid_ashpazbashi2های موجود در متن دستور پخت‌ها (ستون recipe جدول foods) را به @hamid_ashpazbashi تغییر دهد. این کوئری را برای او بنویسید.
  2. شناسه، عنوان، میانگین امتیازات و تعداد آرای ۱۰ غذای برتر را برگردانید (ابتدا برحسب میانگین امتیازات به‌صورت نزولی، سپس برحسب تعداد آرا به‌صورت نزولی و سپس برحسب شناسه‌ی غذا به‌صورت نزولی). میانگین امتیازات را در قالب ستونی با نام rating و تعداد آرا را در قالب ستونی با نام rate_count برگردانید. اگر امتیازی به یکی از غذاهای موجود در نتیجه داده نشده بود، مقدار ستون‌های rating و rate_count باید صفر باشد.
  3. محتویات جدول غذاها را به‌همراه ستون جدیدی با نام total_price برگردانید. مقدار این ستون باید برابر با جمع حاصل‌ضرب قیمت واحد مواد اولیه‌ی هر غذا در تعدادشان باشد. اگر ماده‌ی اولیه‌ای برای غذا ثبت نشده بود، مقدار این ستون باید صفر باشد.
  4. شناسه‌ی غذاهایی که کاربر با نام کاربری quera با استفاده از مواد اولیه‌ش می‌تواند بپزد را در قالب ستونی با نام id برگردانید. نتایج باید به‌ترتیب نزولی شناسه‌ی غذاها باشند. اگر ماده‌ی اولیه‌ای برای یک غذا ثبت نشده باشد، این غذا نباید در نتیجه وجود داشته باشد.

آن‌چه باید آپلود کنید🔗

کد خود را در قالب زیر، در یک فایل با پسوند sql قرار داده و آن را ارسال کنید.

-- Section1
   your 1st query here
-- Section2
   your 2nd query here
-- Section3
   your 3rd query here
-- Section4
   your 4th query here
SQL
ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.