2017-12-22 7 views
2

私のデータベースでは、各照会には多数の予約が関連付けられています。各予約には、予約が関係する多数の人(pax)がいます。私は各質問に対してpaxの最大値を合計したいと思います(例えば、pax = 3、3、4の3つの予約があった場合は、4回使用したいと思います)。現在、私はこれを持っています:MySQL max()を使用しているときにグループ関数を無効にしました

SELECT SUM(MAX(b.pax)) AS `pax` 
FROM enquiry e 

LEFT JOIN booking b ON b.enquiry_id = e.id 

しかし、それはエラー 'グループ機能の無効な使用'を返しています。私は間違って何をしていますか?私が 'max'を使用しないと、問い合わせごとに1つではなくpaxのすべての値を合計しています。もし 'GROUP BY e.id'を使用すると、単一の数値は返されません。

答えて

3

次の2つの集計関数この方法を使用することはできません、あなたの代わりにこれを行うことができます:だから

SELECT SUM(MaxPax) AS Total 
FROM 
(
    SELECT MAX(b.pax) AS MaxPax 
    FROM enquiry e 
    LEFT JOIN booking b ON b.enquiry_id = e.id 
    GROUP BY b.enquiry_id 
) AS t; 

、内側のクエリは、あなたに各照会の最大paxを与えるだろう。次に、外部クエリでは、SUMを使用して合計を取得できます。

+1

サブクエリに 't'エイリアスが必要であることに注意することが重要です。そうでない場合は失敗します。 – CodeLikeBeaker

+0

これは完全に機能しました、ありがとうございます! –

関連する問題