0

次のクエリは MySql 5 で機能しますが、私のクライアントには MySql 4.1.15 があり、このクエリは次のエラーで停止します。

#1140 - GROUP BY 句がない場合、GROUP 列のない GROUP 列 (MIN()、MAX()、COUNT()、...) の混合は不正です

クライアントのMySqlバージョンのアップグレードはオプションではありません。MySqlの古いバージョンで動作するようにこれを書き直すのを手伝ってもらえますか?

SELECT 
   Sum( room_rev + room_rev_future ) as weekly_room_rev, 
   Sum( (`food_rev`) + (`beverage_rev`)) as weekly_catering_rev,
   (SELECT min_sales_persons 
   FROM bdp_hotel_min WHERE 
   bdp_hotel_min.hotel_num = bdp_scorecard.hotel_num 
   AND UNIX_TIMESTAMP(bdp_hotel_min.`min_override_week`) 
   < UNIX_TIMESTAMP("2011-12-02 23:59:59") 
   ORDER BY bdp_hotel_min.`min_override_week` DESC LIMIT 1 ) as override_persons,
   min_sales_persons 
FROM bdp_scorecard JOIN locations ON bdp_scorecard.hotel_num = locations.hotel_num 
WHERE bdp_scorecard.hotel_num =837 AND bdp_scorecard.hotel_num = 837 
AND UNIX_TIMESTAMP(bdp_scorecard.`created_date`) >= UNIX_TIMESTAMP("2011-11-26") 
AND UNIX_TIMESTAMP(bdp_scorecard.`created_date`) < UNIX_TIMESTAMP("2011-12-02 23:59:59") 
4

1 に答える 1

1

テストできませんが、エラーを考えると group by が必要なようです..

SELECT 
   Sum( room_rev + room_rev_future ) as weekly_room_rev, 
   Sum( (`food_rev`) + (`beverage_rev`)) as weekly_catering_rev,
   (SELECT min_sales_persons 
   FROM bdp_hotel_min WHERE 
   bdp_hotel_min.hotel_num = bdp_scorecard.hotel_num 
   AND UNIX_TIMESTAMP(bdp_hotel_min.`min_override_week`) 
   < UNIX_TIMESTAMP("2011-12-02 23:59:59") 
   ORDER BY bdp_hotel_min.`min_override_week` DESC LIMIT 1 ) as override_persons,
   min_sales_persons 
FROM bdp_scorecard JOIN locations ON bdp_scorecard.hotel_num = locations.hotel_num 
WHERE bdp_scorecard.hotel_num =837 AND bdp_scorecard.hotel_num = 837 
AND UNIX_TIMESTAMP(bdp_scorecard.`created_date`) >= UNIX_TIMESTAMP("2011-11-26") 
AND UNIX_TIMESTAMP(bdp_scorecard.`created_date`) < UNIX_TIMESTAMP("2011-12-02 23:59:59")
GROUP BY override_persons, min_sales_persons
于 2012-04-16T18:08:48.590 に答える