2009-11-10 4 views
1

Quelqu'un peut-il me préciser la syntaxe correcte pour cette instruction?Corriger la syntaxe pour SQL UPDATE où la valeur à définir est un SELECT

J'essaie de mettre à jour un nouveau champ dans la table rounds avec une moyenne d'un champ dans la table holesrounds.id est stocké en tant que clé étrangère.

UPDATE `rounds` SET drivingDistance_avg_per_hole = 
SELECT SUM(holes.drivingDistance)/COUNT(holes.drivingDistance) as avg 
FROM `holes`, `rounds` 
WHERE holes.drivingDistance != '' 
AND holes.round = rounds.id 

Sure apprécierait la leçon!

Répondre

2

Dépend de votre base de données. SQL standard n'a pas la syntaxe FROM avec UPDATE et certaines bases de données ne le prennent pas en charge. Dans ce cas, cela devrait fonctionner:

UPDATE `rounds` SET drivingDistance_avg_per_hole = (
SELECT SUM(holes.drivingDistance)/COUNT(holes.drivingDistance) as avg 
FROM `holes` 
WHERE holes.drivingDistance != '' 
AND holes.round = rounds.id) 

Les points clés sont que le sous-sélection doit être entre parenthèses, et que vous ne veulent inclure la table de destination dans le sous-sélection parce que vous êtes sélectionner toutes les lignes de la table alors que vous vous souciez uniquement des lignes holes qui correspondent à la ligne correspondante de rounds.

+0

Merci beaucoup! J'ai certainement appris quelque chose de nouveau là-bas! – jerrygarciuh

Questions connexes