2016-05-05 3 views
0

私は学校プロジェクトのために気象ステーションをプログラミングしています。MYSQL - "#1111 - グループ機能の無効な使用"エラー

私は私の読書と計算値を持つ1つのテーブルがあります。計算された値で2番目のテーブルを更新するmysqlクエリを書きました。私はこのクエリを実行すると、私は

1111このエラーが発生した - グループ機能の使用が無効です。

を私が間違ってやっているのか分かりません。

マイクエリ:

UPDATE Waarnemingen2 As t1 
INNER JOIN (SELECT `Datum_Tijd`,`Temperatuur`,`Luchtvochtigheid`,`Luchtdruk`,`Regenhoeveelheid` FROM Waarnemingen GROUP BY day(`Datum_Tijd`) + hour(`Datum_Tijd`)) as t2 
SET t1.`Min. temperatuur` = MIN(`Temperatuur`), 
    t1.`Gem. temperatuur` = AVG(`Temperatuur`), 
    t1.`Max. temperatuur` = MAX(`Temperatuur`), 
    t1.`Min. luchtvochtigheid` = MIN(`Luchtvochtigheid`), 
    t1.`Gem. luchtvochtigheid` = AVG(`Luchtvochtigheid`), 
    t1.`Max. luchtvochtigheid` = MAX(`Luchtvochtigheid`), 
    t1.`Min. luchtdruk` = MIN(`Luchtdruk`), 
    t1.`Gem. luchtdruk` = AVG(`Luchtdruk`), 
    t1.`Max. luchtdruk` = MAX(`Luchtdruk`), 
    t1.`Regen` = SUM(`Regenhoeveelheid`) 

クエリが列「Temperatuur」、「Luchtvochtigheid」とそれぞれの時間から「Luchtdruk」から最大値と平均最小値を取る必要があります。

私を助けることができる人がいますか?

+0

AGGREGATE関数を使用していない場合は、GROUP BYの日( 'Datum_Tijd')+時間(' Datum_Tijd')は不要です。 –

+0

@JayDipJ GROUPを集計なしで作成すると、完全に役に立たないわけではありません。 –

答えて

0

GROUP BY句に含まれていないSELECT文の集約されていない列があるためです。 GROUP BYとSELECTで

、あなたが選択することができる唯一のカラムは次のとおりです。

  • 集計(MAXなど(Temperatur)、MIN(Luchtdruk)、)
  • グループ化列

それ以外の場合は、このエラーが発生します。

サブクエリを変更して集計を実行し、集計した値を結合したテーブルに割り当てます。

(私はMySQLの構文を知らない、それはUPDATEが少し異なるに参加しないため、このコードは、SQL Serverで動作しませんが、重要な概念は、集合体である。)

すなわち

UPDATE Waarnemingen2 As t1 
INNER JOIN (

SELECT day(`Datum_Tijd`) as day, hour(`Datum_Tijd`) as hour, MIN(Temperatur) as Min_Temperature FROM Waarnemingen GROUP BY day(`Datum_Tijd`) , hour(`Datum_Tijd`) 
) t2 on t1.day = t2.day and t1.hour = t2.hour 
set 
t1.MinTemp = t2.Mintemp 
関連する問題