لینکهای مفید برای شرکت در مسابقه:
در زمان مسابقه میتوانید سوالهای خود را از قسمت "سوال بپرسید" مطرح کنید.
بعد از مسابقه در ساعت ۱۹:۰۰ امروز وبیناری برای حل بخشی از سوالات مسابقه و پاسخگویی به سوالات شما تدارک دیدهایم که میتوانید از طریق این لینک شرکت نمایید. دقت کنید که در هنگام ورود باید گزینه مهمان را انتخاب نمایید.
کد شما باید روی نسخهی استاندارد MySQL قابل اجرا باشد. برای چک کردن سینتکس کد SQL خود میتوانید از این وبسایت کمک بگیرید.
حمید یک برنامهنویس حرفهای است. او اخیراً به آشپزی علاقهمند شده و تصمیم گرفته تا یک وبسایت برای بهاشتراکگذاری دستور پختهای انحصاریاش راهاندازی کند. او میخواهد قابلیتهای پیشرفتهای را در وبسایتش ارائه دهد. برای مثال، این قابلیت که کاربران بتوانند مواد اولیهی موجودشان را در سایت ثبت کرده و سیستم بتواند لیست غذاهایی که با استفاده از مواد اولیهشان قابل پخت هستند را نمایش دهد. همچنین، کاربران امکان امتیازدهی (از ۱ تا ۵) به دستور پختها را دارند.
حمید بهخوبی از پس طراحی جداول دیتابیس سایتش برآمده، اما برای نوشتن کوئریهایش به کمک شما نیاز دارد.
پایگاه دادهی اولیهی سایت حمید شامل ۶ جدول با اسامی و ساختارهای زیر است:
users
):نام ستون | نوع | تعریف | ملاحضات |
---|---|---|---|
id |
int(11) |
شناسهی کاربر | primary key auto_increment |
username |
varchar(255) |
نام کاربری کاربر |
foods
):نام ستون | نوع | تعریف | ملاحضات |
---|---|---|---|
id |
int(11) |
شناسهی غذا | primary key auto_increment |
name |
varchar(255) |
نام غذا | |
recipe |
text |
متن دستور پخت غذا |
ingredients
):نام ستون | نوع | تعریف | ملاحضات |
---|---|---|---|
id |
int(11) |
شناسهی مادهی اولیه | primary key auto_increment |
name |
varchar(255) |
نام مادهی اولیه | |
price_per_unit |
decimal(10,2) |
قیمت واحد مادهی اولیه |
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) |
مقدار مادهی اولیه |
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) |
مقدار مادهی اولیه |
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 خواستهشده از شما موارد زیر است (توجه کنید که هر کوئری نمرهای جداگانه دارد و اگر کوئری یک قسمت را نتوانستید بزنید، کوئریهایی که حل کردید را بفرستید و قسمت آن کوئری را خالی بگذارید):
@hamid_ashpazbashi2
به اشتراک میگذاشته. حال، نام کاربری کانالش را به @hamid_ashpazbashi
تغییر داده است. او اکنون میخواهد همهی @hamid_ashpazbashi2
های موجود در متن دستور پختها (ستون recipe
جدول foods
) را به @hamid_ashpazbashi
تغییر دهد. این کوئری را برای او بنویسید.rating
و تعداد آرا را در قالب ستونی با نام rate_count
برگردانید. اگر امتیازی به یکی از غذاهای موجود در نتیجه داده نشده بود، مقدار ستونهای rating
و rate_count
باید صفر باشد.total_price
برگردانید. مقدار این ستون باید برابر با جمع حاصلضرب قیمت واحد مواد اولیهی هر غذا در تعدادشان باشد. اگر مادهی اولیهای برای غذا ثبت نشده بود، مقدار این ستون باید صفر باشد.quera
با استفاده از مواد اولیهش میتواند بپزد را در قالب ستونی با نام id
برگردانید. نتایج باید بهترتیب نزولی شناسهی غذاها باشند. اگر مادهی اولیهای برای یک غذا ثبت نشده باشد، این غذا نباید در نتیجه وجود داشته باشد.کد خود را در قالب زیر، در یک فایل با پسوند sql
قرار داده و آن را ارسال کنید.