2016-03-31 12 views
1

に表から値を渡し、その名前はpuntajesです:が、私はこのテーブルを持っている別の表

+---------------+---------------+---------+ 
| estudiante_ID | evaluacion_ID | puntaje | 
+---------------+---------------+---------+ 
|    1 |    1 |  15 | 
|    2 |    1 |  11 | 
|    3 |    1 |  17 | 
|    4 |    1 |  12 | 
|    1 |    2 |  13 | 
|    2 |    2 |  8 | 
|    3 |    2 |  15 | 
|    4 |    2 |  16 | 
|    1 |    3 |  9 | 
|    2 |    3 |  14 | 
|    3 |    3 |  9 | 
|    4 |    3 |  10 | 
|    1 |    4 |  15 | 
|    2 |    4 |  16 | 
|    3 |    4 |  9 | 
|    4 |    4 |  12 | 
+---------------+---------------+---------+ 

そして私はevaluacion_IDが3に等しいpuntaje列から最大のスコアを取得したい、私はこれをしたいです値がevaluacionesテーブルの「maxpuntaje」欄にあるように、更新のように、これはevaluacionesテーブルです:

+---------------+------------------+------+-----+---------+----------------+ 
| Field   | Type    | Null | Key | Default | Extra   | 
+---------------+------------------+------+-----+---------+----------------+ 
| fecha   | date    | NO |  | NULL |    | 
| tipo   | enum('P','E') | NO |  | NULL |    | 
| maxpuntaje | int(11)   | NO |  | NULL |    | 
| clase_ID  | int(10) unsigned | NO |  | NULL |    | 
| evaluacion_ID | int(10) unsigned | NO | PRI | NULL | auto_increment | 
+---------------+------------------+------+-----+---------+----------------+ 

テーブルの両方を持っているevaluacion_ID列

答えて

2

私はあなたのクエリは、すべてのevaluacion_IDのために実行することができるようにUPDATEと最大puntaje値の取得を制限するWHERE条件をコメントアウトしました。 3つだけ必要な場合は、コメントを削除してください。 MySQLのUPDATEを使用して

はJOIN構文:

UPDATE evaluaciones e 
LEFT JOIN (
    SELECT evaluacion_ID, MAX(puntaje) maxpuntaje 
    FROM puntajes 
    -- WHERE evaluacion_ID = 3 
    GROUP BY evaluacion_ID 
) p USING (evaluacion_ID) 
SET maxpuntaje = p.maxpuntaje 
-- WHERE e.evaluacion_ID = 3 
1

私はあなたがこの探している疑いがありますq ueryで:

UPDATE evaluaciones 
SET maxpuntaje = (
    SELECT max(puntaje) 
    FROM puntajes 
    WHERE evaluacion_ID = evaluaciones.evaluacion_ID 
) 
WHERE evaluacion_ID = 3 
関連する問題