Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Составление SQL-запросов > Помогите разобраться в чем ошибка


Автор: SQL123 14.10.2022, 15:25
Помогите, пожалуйста, разобраться с ошибкой. Не могу понять, чего не хватает в коде.
Код корректно отрабатывает добавление столбца и рассчитывает скидку, но при попытке отфильтровать, выдает ошибку, что новый столбец неизвестен таблице. Не понимаю, что нужно дописать.
Заранее спасибо!

Вот мое "творчество":

SELECT author, title, amount, price,
    ROUND(IF(amount>10, price*0.75, price),2) AS new_price
FROM book;
SELECT * FROM book ORDER BY author ASC, new_price DESC;


Задание
На складе решили снизить цену тех книг, которых на складе слишком много. Для книг, количество которых больше 10 снизить цену на 25%. Цену остальных книг оставить без изменения. Написать запрос, куда включить автора, название книги, количество, цену и новую цену, последний столбец назвать new_price. Новую цену округлить до двух знаков после запятой. Информацию отсортировать сначала по фамилии автора в алфавитном порядке, а затем по убыванию новой цены книги.

Таблица: book

 book_id | title                 | author           | price  | amount |
+---------+-----------------------+------------------+--------+--------+
| 1       | Мастер и Маргарита    | Булгаков М.А.    | 670.99 | 3      |
| 2       | Белая гвардия         | Булгаков М.А.    | 540.50 | 5      |
| 3       | Идиот                 | Достоевский Ф.М. | 460.00 | 10     |
| 4       | Братья Карамазовы     | Достоевский Ф.М. | 799.01 | 2      |
| 5       | Стихотворения и поэмы | Есенин С.А.      | 650.00 | 15 

Автор: Oldshelf 14.10.2022, 17:27
Код

SELECT author, title, amount, price,
    ROUND(IF(amount>10, price*0.75, price),2) AS new_price
FROM book;
SELECT * FROM book ORDER BY author ASC, new_price DESC;

Здесь два отдельных запроса. Поэтому `new_price` во втором запросе не определена.

Автор: SQL123 14.10.2022, 17:32
Цитата(Oldshelf @ 14.10.2022,  17:27)
Код

SELECT author, title, amount, price,
    ROUND(IF(amount>10, price*0.75, price),2) AS new_price
FROM book;
SELECT * FROM book ORDER BY author ASC, new_price DESC;

Здесь два отдельных запроса. Поэтому `new_price` во втором запросе не определена.


Подскажите, пожалуйста, как их объединить?

Автор: Akina 14.10.2022, 19:27
Выбросить второй запрос (он нахрен не нужен), оставить только ORDER BY, который вставить в первый запрос.

Автор: SQL123 18.10.2022, 10:57
Спасибо большое!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)