0

***ルール: --- いかなる結合も使用せず、相関サブクエリも使用しないでください。--- コンマ結合を使用しないでください。--- 結合を使用すると、そのタスクのポイントは得られません。From 句は 1 つのテーブルのみを参照します。--- 変数を使用しないでください。

***私の問題は次のとおりです。books テーブル内の本のタイトルに Bird が含まれる各本について、本の ID とタイトル、およびその本の注文があるかどうかに関するメッセージを表示します。Count() 関数は使用しないでください。出力はこの形式に従い、OrderStatus 列で並べ替えられ、注文のない本が最初になります。2 番目のソート キーは書籍 ID です。

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;
4

2 に答える 2

0

SELECT BookId,Title, COUNT(BookId),(IF (COUNT(BookId))>0,"No Order","Have Orders") AS Status FROM a_bkinfo.books BK WHERE title LIKE '%Bird%' GROUP BY BookId ORDER BY book_id

于 2013-11-04T10:24:07.600 に答える
0

このクエリを試してください:

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;
于 2013-11-04T11:47:15.440 に答える