Update avec select avec group by ... ouille :-/

cs_loic72 Messages postés 18 Date d'inscription vendredi 4 novembre 2005 Statut Membre Dernière intervention 1 août 2007 - 2 mai 2006 à 17:02
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 - 3 mai 2006 à 20:03
bonsoir,
j'ai une question pour ceux qui métrisent les requete update aliant les select qui utilisent les group by?

Je m'explique. Voici ma requete vous verrez ce que je veux dire :

update projet
set p_max=
      ( select max(aj_budget_engage),aj_proj_id,aj_phas_id,aj_tach_id
       from ajust
       group by aj_proj_id,aj_phas_id,aj_tach_id )
where p_proj_id=aj_proj_id and p_phas_id=aj_phas_id and p_tach_id=aj_tach_id

le but :
sélectionner Max, le maximum d'un champ d'une table, pour chaque projet,phase,tache et mettre à jour ma table avec MAX.

J'espère avoir été le plus clair possible.
A voir également:

3 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 36
2 mai 2006 à 21:38
Salut

update projet
set p_max=
( select max(aj_budget_engage)
from ajust
group by aj_proj_id,aj_phas_id,aj_tach_id )
where p_proj_id=aj_proj_id and p_phas_id=aj_phas_id and p_tach_id=aj_tach_id

Fonctionne-til car dans le set tu ne peux mettre qu'un champ , ce qui est logique.

Mais le group by continue normalement de focntionner.

Bon SQL
cs_loic72 Messages postés 18 Date d'inscription vendredi 4 novembre 2005 Statut Membre Dernière intervention 1 août 2007 1
3 mai 2006 à 13:34
Salut et merci pour ta réponse.

le problème est que le grouop by pose problème : j'ai une erreur (je bosse sur une base Access) :

" [Microsoft][Pilote ODBC Microsoft Access] Trop peu de paramètres. 3 attendu "

à la ligne où j'exécute la requete.

le problème c'est de récupérer la valeur max et d'affecter le champ de ma table avec.
seulement si j'utilise le group by ça me force à mettre plusieurs paramètres en retour dans mon select.
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 36
3 mai 2006 à 20:03
Salut,

De toute facon le groupby ne sert à rien.
select max(aj_budget_engage) from ajust
Suffit

car dans le set tu ne peut mettre qu'une seule valeur
et ton group by peux te ramner plusieurs lignes groupées;

Je pense que tu n'a pas bien compris l'interet du group by.


Voila
Rejoignez-nous