2016-03-31 29 views
1

ich diese Tabelle haben, ist sein Name Punktzahl,:Pass einen Wert aus einer Tabelle zu einer anderen Tabelle

+---------------+---------------+---------+ 
| 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 | 
+---------------+---------------+---------+ 

Und ich möchte die maximale Punktzahl von puntaje Säule erhalten, wo evaluacion_ID gleich 3 ist, möchte ich dies Wert in der evaluaciones Tisch in der ‚maxpuntaje‘ Spalte zu sein, wie ein Update, das ist evaluaciones Tabelle:

+---------------+------------------+------+-----+---------+----------------+ 
| 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 | 
+---------------+------------------+------+-----+---------+----------------+ 

beide Tabellen haben die evaluacion_ID Spalte

Antwort

2

Ich habe WHERE-Bedingungen auf Kommentar, dass die Aktualisierung und die maximalen puntaje Wert Retrieval begrenzen, so dass Ihre Abfrage für alle evaluacion_ID ausgeführt werden könnte. Wenn Sie es nur für 3 benötigen, entfernen Sie die Kommentarzeichen.

mit MySQL UPDATE JOIN-Syntax:

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

ich vermute, Sie suchen diese q uery:

UPDATE evaluaciones 
SET maxpuntaje = (
    SELECT max(puntaje) 
    FROM puntajes 
    WHERE evaluacion_ID = evaluaciones.evaluacion_ID 
) 
WHERE evaluacion_ID = 3 
Verwandte Themen