Как мне решить этот подзапрос с помощью выражения case?
*** Правила: --- Не используйте соединение любого рода и не используйте коррелированный подзапрос. --- Не используйте запятую. --- Если вы используете соединение, вы не получите очков за эту задачу. Предложение From будет ссылаться только на одну таблицу. --- НЕ используйте переменную.
*** Вот моя проблема: для каждой книги в таблице книг, которая включает Bird в название книги, отобразите идентификатор и название книги, а также сообщение о том, есть ли у нас какие-либо заказы на эту книгу. Не используйте функцию Count(). Вывод будет следовать этому формату и будет отсортирован по столбцу OrderStatus с книгами без порядка в первую очередь; второй ключ сортировки - это идентификатор книги.
Вот решение с использованием функции count() и коррелированного подзапроса. Как мне решить эту проблему, не используя ни один? Помните, я также не могу использовать соединение.
SELECT book_id, title
, CASE (
SELECT count(*)
FROM a_bkorders.order_details OD
WHERE OD.book_id = BK.book_id
)
when 0 then 'no orders'
when 1 then 'Have orders'
when 2 then 'Have orders'
when 3 then 'Have orders'
else 'Have orders'
End as OrderStatus
From a_bkinfo.books BK
WHERE title Like '%Bird%'
ORDER BY OrderStatus, book_id;
2 ответа
Попробуйте этот запрос:
SELECT book_id, title
, CASE when (SELECT count(*) FROM a_bkorders.order_details OD WHERE OD.book_id = BK.book_id) = 0
then 'no orders'
when (SELECT count(*) FROM a_bkorders.order_details OD WHERE OD.book_id = BK.book_id) = 1
then 'Have orders'
when (SELECT count(*) FROM a_bkorders.order_details OD WHERE OD.book_id = BK.book_id) = 2
then 'Have orders'
when (SELECT count(*) FROM a_bkorders.order_details OD WHERE OD.book_id = BK.book_id) = 3
then 'Have orders'
else 'Have orders'
End as OrderStatus
From a_bkinfo.books BK
WHERE title Like '%Bird%'
ORDER BY OrderStatus, book_id;
ВЫБЕРИТЕ BookId, Название, COUNT(BookId),(ЕСЛИ (COUNT(BookId))>0,"Нет заказа","Есть заказы") AS Статус ОТ a_bkinfo.books BK ГДЕ название LIKE '%Bird%' GROUP BY BookId ORDER BY book_id