Как мне решить этот подзапрос с помощью выражения 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

Другие вопросы по тегам