Задавайте вопросы, мы ответим
Вы не зашли.
Всем привет! Плиз помогите решить задачку по теме "Объединение с помощью UNION: сортировка")) Не пойму что конкретно надо сделать. Нужно составить SQL-запрос.
Не кидайтесь тапками)) Я не волшебник,я только учусь)))
Вот задача:
На главной странице сайта выводится ТОП10 компьютерных игр. Чтобы вывод был разнообразным — берут по две самых популярных игры из 5 категорий, а затем сортируют полученные данные по рейтингу в обратном порядке. Строки с одинаковым рейтингом отсортируйте по id.
Получите из таблицы games данные для вывода на главную страницу сайта для категорий: 1 - Action, 2 - RPG, 3 - Adventure, 4 - Strategy и 5 - Shooter. Выведите поля id, name, rating и genre, где genre — название категории.
games
+----+-------------+---------------------------------------+--------+------+
| id | category_id | name | rating | year |
+----+-------------+---------------------------------------+--------+------+
| 1 | 2 | The Witcher 3: Wild Hunt | 9.61 | 2015 |
| 2 | 4 | Warcraft III: The Frozen Throne | 9.00 | 2003 |
| 3 | 1 | Max Payne 2: The Fall of Max Payne | 8.63 | 2003 |
| 4 | 3 | The Last of Us | 9.45 | 2013 |
| 5 | 3 | Mafia II | 8.94 | 2010 |
| 6 | 1 | Grand Theft Auto V | 9.18 | 2013 |
| 7 | 5 | Far Cry 3 | 8.67 | 2012 |
| 8 | 4 | Plants vs. Zombies | 8.90 | 2009 |
| 9 | 2 | Diablo III | 9.22 | 2012 |
| 10 | 8 | Mortal Kombat X | 8.70 | 2015 |
| 11 | 7 | Tetris | 9.05 | 1984 |
| 12 | 5 | Doom | 8.75 | 2016 |
| 13 | 2 | Mass Effect 3 | 9.00 | 2012 |
| 14 | 3 | Uncharted 4: A Thief's End | 9.33 | 2016 |
| 15 | 2 | Call of Duty: Black Ops II | 8.88 | 2012 |
| 16 | 5 | Metro: Last Light | 9.25 | 2013 |
| 17 | 1 | Outlast | 9.00 | 2013 |
| 18 | 6 | Need for Speed: Most Wanted | 9.08 | 2005 |
| 19 | 4 | Warcraft III: Reign of Chaos | 9.29 | 2002 |
| 20 | 3 | The Walking Dead: The Game - Season 2 | 9.00 | 2014 |
Заранее спасибо.
Неактивен
select id, name, rating, 'Action' as genre from games where category_id=1
union all
...
select id, name, rating, 'Shooter' as genre from games where category_id=5
order by rating desc, id;
Неактивен
vasya написал:
select id, name, rating, 'Action' as genre from games where category_id=1
union all
...
select id, name, rating, 'Shooter' as genre from games where category_id=5
order by rating desc, id;
Сделал так:
select id, name, rating, 'Action' as genre from games where category_id=1
union all
select id, name, rating, 'RPG' as genre from games where category_id=2
union all
select id, name, rating, 'Adventure' as genre from games where category_id=3
union all
select id, name, rating, 'Strategy' as genre from games where category_id=4
union all
select id, name, rating, 'Shooter' as genre from games where category_id=5
order by rating desc, id;
но ответ такой вернуло
The query should return 10 records
Query result:
+----+---------------------------------------+--------+-----------+
| id | name | rating | genre |
+----+---------------------------------------+--------+-----------+
| 1 | The Witcher 3: Wild Hunt | 9.61 | RPG |
| 4 | The Last of Us | 9.45 | Adventure |
| 14 | Uncharted 4: A Thief's End | 9.33 | Adventure |
| 19 | Warcraft III: Reign of Chaos | 9.29 | Strategy |
| 16 | Metro: Last Light | 9.25 | Shooter |
| 9 | Diablo III | 9.22 | RPG |
| 6 | Grand Theft Auto V | 9.18 | Action |
| 2 | Warcraft III: The Frozen Throne | 9.00 | Strategy |
| 13 | Mass Effect 3 | 9.00 | RPG |
| 17 | Outlast | 9.00 | Action |
| 20 | The Walking Dead: The Game - Season 2 | 9.00 | Adventure |
| 5 | Mafia II | 8.94 | Adventure |
| 8 | Plants vs. Zombies | 8.90 | Strategy |
| 15 | Call of Duty: Black Ops II | 8.88 | RPG |
| 12 | Doom | 8.75 | Shooter |
| 7 | Far Cry 3 | 8.67 | Shooter |
| 3 | Max Payne 2: The Fall of Max Payne | 8.63 | Action |
+----+---------------------------------------+--------+-----------+
Affected rows: 17
Что то не так(((
Неактивен
select id, name, rating, 'Action' as genre from games where category_id=1 order by rating desc, id limit 2
union all
...
Неактивен
vasya написал:
select id, name, rating, 'Action' as genre from games where category_id=1 order by rating desc, id limit 2
union all
...
Спасибо, помогло)) только надо было ещё все SELECTы в скобки "завернуть" :-)
Неактивен
Вам для зачета?
Тогда попробуйте применить 3ий способ из выбрать несколько записей из каждой группы. Как раз и union all будет использован. Препод явно оценит
Неактивен
vasya написал:
Вам для зачета?
Тогда попробуйте применить 3ий способ из выбрать несколько записей из каждой группы. Как раз и union all будет использован. Препод явно оценит
Нет не для зачёта)))Для прохождения курса Основы SQL.. У меня на работе коллеги с IT отдела зовут меня к ним в отдел ( мол типа я шаристый в ПК и т.п теме) Вот посоветовали изучить SQL как основу, а остальному научат сами. Вот я уже почти весь курс завершил осталось немного. Мне и самому эта тема интереснее моей текущей работы.. Но вот не всегда получается вникнуть без чьей-либо помощи :-)
В общем спасибо огромное за помощь :-)
Неактивен